cv::内存位置出现异常错误

cv::Exception at memory location error occurs

本文关键字:异常 错误 位置 内存 cv      更新时间:2023-10-16

我有一台yuv相机。

我将 yuv 转换为 bgr(因为 opencv 使用 bgr(,但我得到一个例外:

test1.exe 中0x76c1a832处未处理的异常:Microsoft C++异常:cv::内存位置 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");
}

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

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