c++ - C ++中的openCV Mat访问冲突
问题描述
我收到“在 ....exe 中的 0x00007FFF428944E0 (opencv_world343d.dll) 处引发异常:0xC0000005:访问冲突读取位置 0x0000023339631FB8。” 我已经阅读了一些“访问冲突读取位置”的帖子和主题,但我认为我正确分配和初始化内存,这似乎是最常见的问题。
我的代码包含一个“loadfits”函数,它加载一个 16 位灰度图片并将其存储在 openCV cv::Mat 中。该函数有效 - 在 return 语句之前的最后,我可以显示或保存图像,并且在函数内部一切正常。但是当我尝试访问并使用 main() 中的 cv::Mat 时,我得到了访问冲突错误。
#define DFTtypeCV CV_64FC1
#define PICtypeCV CV_16UC1 //16bit grayscale image
Mat loadfits(std::string path)
{
ifstream streamIN(path, ios::binary | ios::in);
vector<char> celyobraz_8(fitsSize*fitsSize * 2, 0);
streamIN.read(&celyobraz_8[0], fitsSize*fitsSize * 2);
... //some code
Mat fits_PICTURE_Mat = Mat(fitsSize, fitsSize, PICtypeCV, &celyobraz_8[0], Mat::AUTO_STEP);
showimg(fits_PICTURE_Mat, "fitsRaw"); //shows the correct image
return fits_PICTURE_Mat; //returns the same image
}
然后我使用这个函数来初始化和使用 main() 中的 cv::Mat
Mat picZERO(fitsSize, fitsSize, PICtypeCV);
Mat picZEROd(fitsSize, fitsSize, DFTtypeCV);
picZERO = loadfits(path);
picZERO.convertTo(picZEROd, DFTtypeCV); //I get the error here
我以为我能够轻松解决这个错误,因为我在函数返回语句之前有正确的数据,但似乎无法弄清楚。
有任何想法吗?谢谢。
解决方案
有同样的问题。就我而言,解决方案是在发布配置中删除指向 opencv_world343d.dll 的链接。此文件仅用于调试模式。
(最初,我按照这个指令http://shailendra.me/tutorial/add-opencv-to-visual-studio-c++-project/)
推荐阅读
- python - 具有交叉验证的 ngrams 文本模型
- azure - 通过 cli 在 azure 数据库中创建表
- json - 在 Logstash 中解析 JSON 事件
- java - 是否可以多次尝试,只有一次捕获
- ibm-mq - 当我在 Android Studio 中作为 Java 正常运行这段代码时,它是如何工作的,但是一旦我将它作为应用程序运行,它就会向我显示 NullPointerExcception?
- mongodb - java mongodb geonear 使用查询类
- ios - 可变长度标签旁边的标签
- node.js - Rookie 在 AWS 中找不到 DynamoDB 的连接字符串
- bash - 启动并终止脚本中的程序并继续
- javascript - Visual Studio:在嵌入式 babel 脚本中自动完成 HTML 标记