C++中的openCV Mat访问冲突
openCV Mat access violation in C++
我得到了"在….exe:0xC0000005:访问违规读取位置0x0000023339631FB8中的0x00007FFF428944E0(opencv_world343d.dll(处抛出的异常。"我读过一些"访问违规读取位置"的帖子和主题,但我认为我正确分配和初始化了内存,这似乎是最常见的问题。
我的代码包含一个"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_world3343d.dll的链接。此文件仅用于调试模式。
(最初,我按照这个指示http://shailendra.me/tutorial/add-opencv-to-visual-studio-c++-项目/(
相关文章:
- 写入位置0x0000000C时发生访问冲突
- 引发异常:读取访问冲突**dynamicArray**为0x1118235.发生
- 链表中写入访问冲突的未知原因
- C++中的openCV Mat访问冲突
- C++尝试深度复制唯一指针时出现内存访问冲突
- C++ 中动态二维数组的访问冲突
- 从嵌套循环中的 std::list 中删除将返回访问冲突
- 写入访问冲突异常
- 在类 12.exe 中0x7B37FF80 (ucrtbased.dll) 引发异常: 0xC0000005:访问冲突读
- 0xC0000005:访问冲突写入位置0xCDCDCDCD动态分配错误
- 读取访问冲突.这0xCDCDCDCD
- 0xC0000005:访问冲突读取位置 0x00000000. 重载 == 运算符的问题
- 插入数组时违反写访问冲突
- 使用 ReadProcessMemory 获取字符串值的访问冲突
- 尝试通过共享指针使用变量时读取访问冲突
- 堆栈上的 C++ 访问冲突写入异常
- 引发异常:写访问冲突. temp 为 nullptr
- 将静态字符数组中的字符分配给动态分配的字符数组 - 访问冲突
- 在C++中删除双向链表的头节点后出现访问冲突异常
- C++OpenCV mat.at在使用数据时产生访问冲突