[英]OpenCV Error Assertion failed on some Pixal Values
我把圖像加載到墊子上:
Mat Mask = cvLoadImage(filename);
它是一個3744 X 5616 RGB圖像。 在下一步我將其轉換為灰度。
cvtColor(Mask,Mask,CV_BGR2GRAY);
在此之后我將其標准化以便稍后使用完整的灰度:
normalize(Mask,Mask,0,255,NORM_MINMAX,CV_8U);
現在我需要特定的灰度值並在某些值上獲得錯誤:
for(int i=0;i<(Picture.rows);i++)
{
for(int j=0;j<(Picture.cols);j++)
{
Vec3b masked = Mask.at<Vec3b>(i,j);
//some stuff
}
}
我在某些像素上遇到以下錯誤:
OpenCV Error: Assertion failed (dims <= 2 && data && (unsigned)i0 < (unsigned)size.p[0] && (unsigned)i1*DataType<_Tp>::channels) < (unsigned)(size.p[1]*channels()) && ((((sizeof(size_t)<<28)|0x8442211) >> ((DataType<_Tp>::depth) & ((1 << 3) - 1))*4) & 15) == elemSize1()) in unknown function, file c:\opencv\build\include\opencv2\core\mat.hpp, line 537
誰能告訴我我做錯了什么? 奇怪的是它只出現在某些Pixel Values上
編輯:附加信息:如果我將我的面具加載為灰度,一切正常。 但是當我使用cvtColor()或Mat Mask = imread(filename,CV_LOAD_IMAGE_GRAYSCALE)時; 在圖像上出現錯誤。 很奇怪...
我認為您的問題是您正在使用.at<Vec3b>(i,j)
訪問二進制圖像。 相反,您希望使用.at<uchar>(i,j)
訪問每個像素。 cvtColor(Mask,Mask,CV_BGR2GRAY);
將3通道BGR圖像更改為單通道灰度圖像。 .at<Vec3b>(i,j)
正在嘗試訪問3通道圖像,該圖像最終將超過內存中圖像數組的末尾,從而導致問題或使這些斷言失效。
for循環的內部部分應如下所示:
unsigned char masked = Mask.at<uchar>(i,j);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.