c++ - cv::内存位置异常发生错误

标签 c++ opencv

我有一个 yuv 相机。

我将 yuv 转换为 bgr(因为 opencv 使用 bgr),但出现异常:

Unhandled exception at 0x76c1a832 in test1.exe: Microsoft C++ exception: cv::Exception at memory location 0x00baee60..

如何修复它?

#include <opencv/cv.h>
#include <opencv/highgui.h>
#include <opencv2/opencv.hpp>

void main()
{
    IplImage* image ;
    CvCapture* capture=cvCaptureFromCAM(CV_CAP_ANY);

    //cv::Mat input;
    cv::Mat output;

    cvNamedWindow("webcam",1);

    cvGrabFrame( capture );

    image = cvRetrieveFrame( capture );

    cv::Mat input = cv::cvarrToMat(image);

    cv::cvtColor(input,output,CV_YUV2BGR_YUY2);

    imshow("webcam", output);


    /*
    while(1)
    {
        //get image from Camera
        image = cvQueryFrame(capture);

        //Iplimage to Mat
        cv::Mat input = cv::cvarrToMat(image);

        //YUV to RGB, CV_YUV2RGB_NV12 CV_YUV2BGR_NV12 CV_YUV2RGB_YV12 CV_YUV2BGR_YV12 CV_YUV2RGB_IYUV CV_YUV2BGR_IYUV CV_YUV2RGB_UYVY CV_YUV2BGR_UYVY
        cv::cvtColor(input,output,CV_YUV2BGR_YUY2);

        // Draw image
        //cvShowImage("webcam", image);
        imshow("webcam", output);


        //key = cvWaitKey(30);
        if(cvWaitKey(33)>=27)
            break;
    }
    */

    cvReleaseCapture(&capture);
    cvDestroyWindow("webcam");
}

最佳答案

代码似乎是正确的,但您没有检查图像是否确实是从捕获设备检索的。您的代码中最可能出现的问题是您没有检索图像,并且您正在尝试转换它是一个空的 Mat(这是不可能的),这会产生错误。

但是,如果您已经在使用 C++,为什么不使用 C++ API 呢?

关于c++ - cv::内存位置异常发生错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42221213/

相关文章:

opencv - 如何准确检测圆

visual-c++ - 将位图(640x480)推送到 AVI 文件的 Visual C++ AVI 编写器函数?

C++如何无错误地调用void函数?

python - Keras 相当于 Caffe 的 'cpu_data()' 方法?

c++ - 静态链接 boost program_options

python - 我的 CNN Keras 预测不正确,我不知道该怎么办

C++ 图形界面框架/库

c++ - 创建类对象时出错

opencv - 如何在 OpenCV 中估计二维相似性变换(线性共形、非反射相似性)?

c++ - opencv拼接多张图片