我需要弄清楚在此之前通过阈值算法设置的灰度图像上是否有给定的像素是黑色还是白色。图像基本上变成了白色背景上的黑色斑点。

Mat falsetest;

...

cv::cvtColor(detected_edges, falsetest, CV_BGR2GRAY);
threshold(falsetest, falsetest,128, 255,THRESH_BINARY);

...

printf("x:%d y:%d %d\n",x,y,falsetest.at<uchar>(x,y));

我希望结果为0或255,但是事实并非如此。不同像素的输出如下所示:
x:1259 y:175 111
x:1243 y:189 184
x:1229 y:969 203
x:293 y:619 255
x:1123 y:339 183

我是在尝试以错误的方式执行此操作,还是错误出在其他地方?

最佳答案

您确定falsetest包含uchar像素,但没有 float 吗?在这种情况下,您需要通过以下方式访问falsetest的值:

falsetest.at<float>(x,y)

08-26 09:23