在C++和OpenCV上出错:"malloc"
Getting error on C++ & OpenCV: "malloc"
我正在拍摄一些图像,并将它们切割成尺寸dimensionImage
x dimensionImage
,尺寸为256x256,如下所示:
Mat getKdimensionImage(String file, int dimension) {
Mat result = Mat::zeros(dimension, dimension, CV_8U);
Mat currentImage = imread(file, CV_LOAD_IMAGE_GRAYSCALE);
for (int i = 0; i < dimension; i++) {
for (int j = 0; j < dimension; j++) {
result.at<int>(i,j) = currentImage.at<int>(i,j);
}
}
return result;
}
然后,在我的main上,我正在加载2个图像:
Mat face1 = getKdimensionImage(path + "FACE/face1.jpg", dimensionImage);
Mat face2 = getKdimensionImage(path + "FACE/face2.jpg", dimensionImage);
但当我开始加载face2时,我得到:
OpenCVtry(18811,0x7fff73568310)malloc:*对象0x10381d608的错误:释放的对象的校验和不正确-对象可能在释放后被修改。*在malloc_error_break中设置断点以调试
对不起,我是Java开发人员,这有点伤脑筋。。。
我可能有什么问题?
非常感谢。
由于错误的类型访问,这里有缓冲区溢出:
result.at<int>(i,j) = currentImage.at<int>(i,j);
两个Mat都是uchar,而不是int,所以它必须是:
result.at<uchar>(i,j) = currentImage.at<uchar>(i,j);
此外,如果在调试模式下运行,您的代码会抛出一个适当的异常,这可能是一个好主意。
我不确定OpenCV是否正确解释了CV_8U。我相信你想要CV_8UC1。
相关文章:
- 如果没有malloc,链表实现将失败
- 访问者访问变体并返回不同类型时出错
- 在Linux for Windows上编译C++代码时出错
- 读取文件的最后一行并输入到链接列表时出错
- 重载操作程序时出错>>用于类中的字符串 memebr
- 调用专用模板时出错"no matching function for call to [...]"
- C++-试图将函数指针推回到另一个CPP文件中的矢量时出错
- LINK 尝试使用 OpenSSL evp aes 256 c++ 时出错
- 在Google Kick start中提交时出错
- 在c++中访问int到类对象的映射时出错
- malloc() 可能出现内存泄漏
- Cuda C++:设备上的Malloc类,并用来自主机的数据填充它
- 分段错误当我试图运行程序时出错
- 使用dynamic_cast和构造函数时出错
- CHECK(调用)函数在Google Colab中出错
- 用pybind11包装C++抽象类时出错
- 为x86而非x64编译时出错
- 当动态分配数组的函数被多次调用时,malloc 出错
- Mysterios Malloc 在运行时出错
- 在C++和OpenCV上出错:"malloc"