运行提示image是nullptr引发未处理的中断怎么回事


#include 
#include 

using namespace std;
using namespace cv;

int main()
{
    string path = "Y:\test_video.mp4";
    VideoCapture cap(path);//VideoCapture cap;cap.open("");
    Mat img;
    while (true)
    {
        cap >> img;//cap.read(img);
        imshow("windows",img);
        waitKey(0);
    }
    return 0;
}

运行提示image是nullptr引发未处理的中断怎么回事

因为是空图,img对应的数据是NULL,那怎么去save去imshow,所以会报错。
在imwrite或imshow前加个判断
if(!img.empty) 满足非空才去imwrite或imshow即可

该回答引用GPTᴼᴾᴱᴺᴬᴵ
这个问题可能是由于没有成功打开视频文件而引起的。请检查一下视频文件路径是否正确,确保程序可以找到视频文件。

此外,您还可以尝试使用cap.isOpened()方法来检查视频文件是否已经成功打开。如果打开失败,该方法会返回false。例如:

VideoCapture cap(path);
if (!cap.isOpened()) {
    cout << "无法打开视频文件" << endl;
    return -1;
}

如果视频文件已经成功打开,但是仍然出现image是nullptr的错误提示,可能是由于cap.read()方法没有成功读取视频帧而引起的。您可以尝试使用cap.grab()方法来读取视频帧,并在读取成功后再使用cap.retrieve()方法来获取帧图像。例如:

VideoCapture cap(path);
if (!cap.isOpened()) {
    cout << "无法打开视频文件" << endl;
    return -1;
}
Mat img;
while (true) {
    cap.grab();  // 读取视频帧
    cap.retrieve(img);  // 获取帧图像
    imshow("windows",img);
    waitKey(0);
}

希望这可以帮助您解决问题。

"Y:\\test_video.mp4"