【发布时间】:2012-09-03 19:42:29
【问题描述】:
我需要确定灰度图像上的任何给定像素是黑色还是白色,我在此之前通过了阈值算法。图像基本上变成白色背景上的黑色斑点。
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
我是否试图以错误的方式执行此操作,或者似乎错误出在其他地方?
【问题讨论】:
-
很难为不完整的代码提供答案。您的错误可能出在您没有向我们展示的代码中。阅读:sscce.org
-
阈值化后,进行 imshow 时的 falsetest 是什么样的?只有黑白还是灰色?您提供的代码应该可以工作,您确定将其粘贴到此处时没有更改任何内容吗?我也很好奇 threshold 和 printf 之间是否有任何可疑之处
-
是的,图像看起来是黑白的。我不认为有任何可疑代码,但如果我不能自己解决这个问题,我会按照上面的建议用 ssccee 提出一个单独的问题。
标签: c++ image-processing opencv