opencv使用imwrite函数提示读取时发生访问冲突?

sky-zhong 2015-10-15 10:38:05
#include "stdafx.h"
#include "iostream"
#include "opencv2/opencv.hpp"
using namespace std;
using namespace cv;
int main(int argc, char const *argv[])
{
Mat im = imread("lena.JPG", 0);
if(im.empty())
{
cout << "Can not load image." << endl;
return -1;
}
Mat result;
Canny(im, result, 50, 150);
imwrite("lena-canny.png", result);
waitKey(0);
return 0;
}

执行后提示:
0x10993110 (opencv_world300.dll) (OpenCV_p38.exe 中)处的第一机会异常: 0xC0000005: 读取位置 0x05C9D000 时发生访问冲突。

请问是哪里出了问题?
...全文
5080 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
SHNwjt 2019-03-02
  • 打赏
  • 举报
回复
第一种处理方式
vector<int> compression_params;
compression_params.push_back(IMWRITE_JPEG_QUALITY);
compression_params.push_back(90);
imwrite("tupian.jpg",image,compression_params);
第二种处理方式
如果是在debug模式下是要在属性管理器里,看链接器-输入-附加依赖项里,是不是添加了不带d的dll,是的话删掉,只保留带d的,如果是在Release模式下就相反 楼上的总结
gongchensu 2018-08-01
  • 打赏
  • 举报
回复 3
如果是在debug模式下是要在属性管理器里,看链接器-输入-附加依赖项里,是不是添加了不带d的dll,是的话删掉,只保留带d的,如果是在Release模式下就相反,这是我相同问题的正解
xue_2012 2018-01-24
  • 打赏
  • 举报
回复
引用 2 楼 byyaoyao 的回复:
我也遇到同样的问题,最后改进之后调试成功了: 加一句定义:string str = "./"; 将imwrite那句改为:imwrite(str+"7.jpg",out); 虽然不太清楚原因,还是希望可以帮助到您~
我用这方法解决了,我是在路径前直接加"./",如"./7.jpg"
坤仔‘ 2017-12-17
  • 打赏
  • 举报
回复
对于imwrite的使用可以参考https://docs.opencv.org/master/d4/da8/group__imgcodecs.html#gabbc7ef1aa2edfaa87772f1202d67e0ce上的imwrite例程 vector<int> compression_params; compression_params.push_back(IMWRITE_PNG_COMPRESSION); compression_params.push_back(9); try { imwrite("alpha.png", mat, compression_params); } catch (cv::Exception& ex) { fprintf(stderr, "Exception converting image to PNG format: %s\n", ex.what()); return 1; } 这样保存图片时不会出现上述问题
zxucver 2017-04-14
  • 打赏
  • 举报
回复
看一下imgcodecs.hpp里面给出来的例子: int main(int argv, char **argc) { // Create mat with alpha channel Mat mat(480, 640, CV_8UC4); createAlphaMat(mat); vector<int> compression_params; compression_params.push_back(IMWRITE_PNG_COMPRESSION); compression_params.push_back(9); try { imwrite("alpha.png", mat, compression_params); } catch (cv::Exception& ex) { fprintf(stderr, "Exception converting image to PNG format: %s\n", ex.what()); return 1; } fprintf(stdout, "Saved PNG file with alpha data.\n"); return 0; }
zxucver 2017-04-14
  • 打赏
  • 举报
回复
这个问题结帖了?不是路径的问题吧,好像确实是三个参数的问题
rikilee_ouc 2016-10-20
  • 打赏
  • 举报
回复
#include <opencv.hpp> #include <vector> int main() { std::vector<int> compression_params = {1,95}; cv::Mat fig = cv::imread("666.jpg", cv::IMREAD_REDUCED_COLOR_4); cv::imwrite("333.jpg", fig,compression_params); return 0; } 我这段代码,调试10次能通过8~9次
rikilee_ouc 2016-10-20
  • 打赏
  • 举报
回复
也不清楚什么原因,反正3.x的版本就是这样,调试的时候有些函数就会出现这个问题,但是如果你参数输入正确,多调试几次总会通过的,感觉也可能和VS有点关系
qq_23293497 2016-08-22
  • 打赏
  • 举报
回复
你从 生成-配置管理器下把debug改为release试试
shiter 2016-01-19
  • 打赏
  • 举报
回复
引用 2 楼 byyaoyao 的回复:
我也遇到同样的问题,最后改进之后调试成功了: 加一句定义:string str = "./"; 将imwrite那句改为:imwrite(str+"7.jpg",out); 虽然不太清楚原因,还是希望可以帮助到您~
那你这个就是工程中,图片的位置没有放对
晒月光的青蛙 2016-01-18
  • 打赏
  • 举报
回复
我运行同样的code没问题啊,请单步调试一下是哪句报的异常
byyaoyao 2016-01-18
  • 打赏
  • 举报
回复
我也遇到同样的问题,最后改进之后调试成功了: 加一句定义:string str = "./"; 将imwrite那句改为:imwrite(str+"7.jpg",out); 虽然不太清楚原因,还是希望可以帮助到您~
杨阿毛阿 2015-10-17
  • 打赏
  • 举报
回复
imwrite有三个参数,跟cvSaveImage有点差别,你可以查查它的参数。手机答,没法帮你找。

19,468

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧