C++ 如何确定OpenCV中的像素是黑色还是白色?

C++ 如何确定OpenCV中的像素是黑色还是白色?,c++,python,opencv,C++,Python,Opencv,我用Python编写了以下代码: 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

我用Python编写了以下代码:

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
    }
cv::threshold(img_gray,img_otsu,0.0255.0,cv::THRESH_BINARY+cv::THRESH_otsu);
对于(int y=0;y,您可以对
Mat
对象使用
at()
函数(请参阅)


img_otsu.at(y,x)
将返回该位置矩阵中元素的值。请注意,您可能必须将
uchar
更改为
img_otsu
所属的任何矩阵类型(例如,
浮点
double
)一旦你得到了值,简单地把它和0或255比较。< /P>好的,那么问题到底是什么?在for循环中,我不能得到像素0和255OH的值,抱歉我的主题名称是WrnReGrimtTunt这个问题更具体,这将是有帮助的。在for循环的C++中,我想输入条件If(imgiOtSu[y,x]==(255))。:CountPixelW+=1如果(img_otsu[y,x]==(0.0)):CountPixelB+=1铅笔错误:断言失败(dims@Orange如果您使用
float
double
而不是
uchar
,它是否也会返回该错误?@Walfie我尝试float和double。@Orange您的
x
y
可能循环太远;尝试更改
@Walfile我尝试更改它。这是相同的结果。您能为我举例说明代码吗?