gpt4 book ai didi

c++ - 如何修复 OpenCV 中的 "Exception Thrown"错误?

转载 作者:太空宇宙 更新时间:2023-11-03 22:37:38 24 4
gpt4 key购买 nike

我在 Visual Studio 2017 中编译我的 OpenCV 程序时遇到错误。错误发生在我使用函数 imwrite 保存灰度图像时。你可以在这里看到截图

the screen capture here

我尝试将文件 opencv_world320.dll 复制到我的目录项目,但仍然不行。

这是代码:

#include <opencv2/opencv.hpp>
#include <opencv/highgui.h>
#include <iostream>
using namespace std;
using namespace cv;

int main(int argv, char** argc)
{
Mat img_original = imread("lisa.jpg",CV_LOAD_IMAGE_UNCHANGED);
Mat img_grayscale = imread("lisa.jpg", CV_LOAD_IMAGE_GRAYSCALE);

imshow("Lisa-Original", img_original);
imshow("Lisa-Grayscale", img_grayscale);

imwrite("LisaGray.jpg", img_grayscale);
waitKey(0);
return 0;
}

这是异常(exception)情况:

Exception thrown at 0x00007FFC7D9B86C2 (opencv_world320.dll) in 1_open_image_lisa.exe: 0xC0000005: Access violation reading location 0x000001926A40F000. occurred

最佳答案

代码本身并没有错,即使 imread 不成功,imwrite 也不会抛出错误。 (虽然,写入 jpg 文件的空 cv::Mat 会创建空文件,这些文件不会被识别为有效的图像文件)。

因此,要查明您的确切问题,请使用 try/catch 机制:

try {
imshow("Lisa-Original", img_original);
imshow("Lisa-Grayscale", img_grayscale);

imwrite("LisaGray.jpg", img_grayscale);
}
catch(cv::Exception& e) {
std::cout << e.msg << std::endl;
}

在我的电脑上,当 imwrite 由于格式而失败时,消息是:

OpenCV(4.0.0) D:\Dev\Opencv4\opencv-4.0.0\opencv-4.0.0\modules\imgcodecs\src\loadsave.cpp:661: error: (-2:Unspecified error) could not find a writer for the specified extension in function 'cv::imwrite_'

在这种情况下,尝试使用另一种格式来保存图片,和/或检查 opencv 是否使用正确的选项和库进行编译。

关于c++ - 如何修复 OpenCV 中的 "Exception Thrown"错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56856748/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com