【发布时间】:2019-11-13 08:30:23
【问题描述】:
我在 Visual Studio 2017 中编译 OpenCV 程序时遇到错误。当我使用函数 imwrite 保存灰度图像时发生错误。您可以在此处查看屏幕截图
我尝试将文件 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;
}
这是个例外:
在 0x00007FFC7D9B86C2 (opencv_world320.dll) 处抛出异常 1_open_image_lisa.exe: 0xC0000005: 访问冲突读取位置 0x000001926A40F000。发生了
【问题讨论】:
-
我的第一个猜测是,由于您使用相对路径进行输入,因此您实际上并没有阅读图像。所以通过检查图像是否有数据来检查读取是否成功: if(img_original.empty()) return -1; //或者如果你没有得到图像,你可能想做的任何事情
-
谢谢,读取图片成功。我刚刚遇到错误行代码 imwrite("LisaGray.jpg", img_grayscale) 保存图像。然后我检查我的项目文件夹,这个图像是创建的,但它的大小是 0kb 并且无法打开。
-
我注意到你混合了旧的 c 和 c++ api,尝试包含 highgui.hpp:#include
标签: c++ image visual-studio opencv exception