weixin_47367620 2022-04-12 17:11 采纳率: 100%
浏览 272
已结题

vs2019版本未经处理的异常0x00007FFA1BFA4F69

在vs2019配置opencv运行中出现了0x00007FFA1BFA4F69,代码本身是没有问题的,但是一开始运行就会弹出另一个窗口问题然后运行窗口卡死

这是我的代码

#include <iostream>
using namespace std;

#include <opencv.hpp>
#include <highgui.hpp>
using namespace cv;

int main()
{
    int nx = 200;//图片宽度(单位为像素)
    int ny = 200;//图片高度(像素)
    //写入文件头
    std::cout << "P3" << std::endl << nx << " " << ny << std::endl << "255" << std::endl;//P3表示颜色为ASCII,255是最大颜色

    //预览窗口
    int WidowWidth;//窗口宽度
    int WindowHeight;//窗口高度
    if (nx > ny)//图片为横板,计算高度与宽度
    {
        WindowHeight = 1080 - 200;
        WidowWidth = (int)((double)WindowHeight * (double)nx / (double)ny);
    }
    else //图片为竖版
    {
        WidowWidth = 1920 - 200;
        WindowHeight = (int)((double)WidowWidth * (double)ny / (double)nx);
    }
    Mat RenderingImage(ny, nx, CV_8UC3, Scalar(50, 50, 50));//创建第一张图
    namedWindow(" 图像预览(渲染中)", WINDOW_NORMAL);//设置标题
    moveWindow(" 图像预览(渲染中)", (int)((1920.0 - WidowWidth) / 2), (int)((180.0 - WindowHeight) / 2) - 50);//窗口位置
    resizeWindow(" 图像预览(渲染中)", WidowWidth, WindowHeight);//窗口大小

    //为了方便对小数的应用,采用double类型
    for (int j = nx - 1; j >= 0; j--)//图片的行信息(即一开始是在199层开始输出然后逐层往下)
    {
        for (int i = 0; i < nx; i++)//列信息(图片从0列开始往右输出)
        {
            //开始配置每个像素点的RGB信息
            double r = double(i) / double(nx);
            double g = double(j) / double(ny);
            double b = 0.2;//每个像素的蓝色通道设定为0.2
            int ir = int(255.99 * r);
            int ig = int(255.99 * g);
            int ib = int(255.99 * b);
            //因为在上面设置的ppm文件的最大颜色(RGB通道值)为255,并且r,g,b范围为0-1,所以需要转换
            std::cout << ir << " " << ig << " " << ib << std::endl;//将数据写入ppm文件

            //元素顺序为蓝绿红
            RenderingImage.at<cv::Vec3b>(ny - 1 - j, i)[0] = ib;//蓝
            RenderingImage.at<cv::Vec3b>(ny - 1 - j, i)[1] = ig;//绿
            RenderingImage.at<cv::Vec3b>(ny - 1 - j, i)[3] = ir;//红
        }

        //每行刷新窗口
        if (!(j % (ny / 100)))
        {
            imshow(" 图像预览(渲染中)", RenderingImage);
            waitKey(1);
        }
    }
    imshow(" 图像预览(渲染中)", RenderingImage);
    waitKey(3000);
    destroyAllWindows();
    return 0;
}

img

我也看了网上那些图片的引用,但是他们的问题都是直接在代码那个cpp文件里面出现,我的是弹出来另一个我没修改过的hpp文件然后报错
我想知道这个问题怎么解决

  • 写回答

1条回答 默认 最新

  • 爱晚乏客游 2022-04-12 17:41
    关注

    img


    你管这叫代码没问题?这都越界了,下标从0开始,红色通道应该是2,改下就可以了

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 4月20日
  • 已采纳回答 4月12日
  • 修改了问题 4月12日
  • 创建了问题 4月12日

悬赏问题

  • ¥88 找成都本地经验丰富懂小程序开发的技术大咖
  • ¥15 如何处理复杂数据表格的除法运算
  • ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)
  • ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
  • ¥200 uniapp长期运行卡死问题解决
  • ¥15 请教:如何用postman调用本地虚拟机区块链接上的合约?
  • ¥15 为什么使用javacv转封装rtsp为rtmp时出现如下问题:[h264 @ 000000004faf7500]no frame?
  • ¥15 乘性高斯噪声在深度学习网络中的应用
  • ¥15 关于docker部署flink集成hadoop的yarn,请教个问题 flink启动yarn-session.sh连不上hadoop,这个整了好几天一直不行,求帮忙看一下怎么解决
  • ¥15 深度学习根据CNN网络模型,搭建BP模型并训练MNIST数据集