2013-02-02 896 views
0

我有这样的代码在Python:如何确定OpenCV中的像素是黑色还是白色?

width = cv.GetSize(img_otsu)[0] 
height = cv.GetSize(img_otsu)[1] 
#print width,":",height 
for y in range(height): 
    for x in range(width): 
     if(img_otsu[y,x]==(255.0)): 
      CountPixelW+=1 
     if(img_otsu[y,x]==(0.0)): 
      CountPixelB+=1 

我想转换此Python代码C++

这是我到目前为止有:

cv::threshold(img_gray,img_otsu,0.0,255.0,cv::THRESH_BINARY+cv::THRESH_OTSU); 


for(int y =0;y<=img_otsu.size().height;y++) 
    for(int x=0;x<=img_otsu.size().width;x++) 
    { 
     //Check Pixel 0 or 255 This is Problem 
    } 

如何我检查在C++中像素是黑色还是白色?

+3

好的,那究竟是什么问题? –

+0

in for循环我无法获得像素0和255的值 – Orange

+0

哦,对不起我的主题名称是错误的 – Orange

回答

0

您可以使用Mat对象的at()函数(请参阅OpenCV docs)。

img_otsu.at<uchar>(y,x)将返回该位置矩阵中元素的值。请注意,您可能必须将uchar更改为任何类型的矩阵img_otsu(例如,floatdouble)。一旦你得到的价值,只需将它比较0或255.

+0

OpenCV错误:断言失败(dims <= 2 && data &&(unsigned)i0 <(unsigned)si ze.p [0] &&(unsigned)(i1 * DataType <_Tp> :: ((数据类型<_Tp> ::深度)&((1())(size.p(1)* channel s())&&((((sizeof(size_t)<< 28)| 0x8442211) << 3 ) - 1))* 4)&15)== elemSize1())in unknown function,file d:\ opencv2.4.2 \ opencv \ build \ include \ opencv2 \ core \ mat.hpp,line 537 – Orange

+0

@Orange如果你使用'float'或'double'而不是'uchar',它是否也返回那个错误? – Walfie

+0

@ Walfie我尝试浮动和双。 – Orange

相关问题