OpenCV学习笔记-关于使用Mat.at(i,j) = int 语法报错
生活随笔
收集整理的這篇文章主要介紹了
OpenCV学习笔记-关于使用Mat.at(i,j) = int 语法报错
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
關于使用Mat.at(i,j) = int 語法報錯,內存異常的原因。
首先是查看異常如何發生的,單步調試可以發現再at方法里有以下斷言:
_Tp& Mat::at(int i0, int i1) {CV_DbgAssert(dims <= 2);CV_DbgAssert(data);CV_DbgAssert((unsigned)i0 < (unsigned)size.p[0]);CV_DbgAssert((unsigned)(i1 * DataType<_Tp>::channels) < (unsigned)(size.p[1] * channels()));CV_DbgAssert(CV_ELEM_SIZE1(traits::Depth<_Tp>::value) == elemSize1());return ((_Tp*)(data + step.p[0] * i0))[i1]; }其中斷言2要求這個Mat必須是有數據填充的,不能是空的。我一開始使用如下方法定義了一個空的Mat.
Mat mat; mat.create(mat_a.size(),mat_a.type());創建了一個指定大小和數據類型的空Mat,所以在調用at方法時報錯。
改變,創建一個以0填充的Mat結構就可以了。
Mat mat = Mat::zeros(mat_a.size(),mat_a.type());總結
以上是生活随笔為你收集整理的OpenCV学习笔记-关于使用Mat.at(i,j) = int 语法报错的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 傅里叶变换学习
- 下一篇: 图像处理-自适应中值滤波