android颜色检测opencv

时间:2015-07-17 07:20:49

标签: android image opencv image-processing

我使用opencv颜色斑点检测来检测黑色背景的小白点。当点很大时它可以检测到它,但是当点变小时,它就无法检测到。 我认为有一个参数,我们可以设置它为彩色斑点检测样本中的小点,但我找不到。任何人都知道吗? 或者任何人都知道更好更快的方法来检测那种白色? 注意:在相机中只有一个白点,所有的背景都是黑色的。

这是物体大的时候(相机靠近物体)的图片:

http://www.axgig.com/images/14410928700656745289.png

这是对象很小的时候(相机远离物体):

http://www.axgig.com/images/00768609020826910230.png

我想检测白点的坐标。怎么样?

1 个答案:

答案 0 :(得分:1)

如果背景的其余部分为黑色并且您感兴趣的区域为白色,则可以使用Imgproc模块中的Moments function找到中心。您可以阅读它背后的数学at Wikipedia,但简单地说,将所有非零点的加权位置相加。获得Moments结构后,您可以通过以下方式计算中心:

x = moments.m10 / moments.m00
y = moments.m01 / moments.m00

在您的情况下,使用Android和OpenCV,这是您将使用的代码:

// inputMat is the Mat that you took screenshots of earlier in the question.
Moments moments = Imgproc.moments(inputMat, true);
float center_x = moments.m10 / moments.m00;
float center_y = moments.m01 / moments.m00;
// now center_x and center_y have the coordinates of the center of the blob.