我使用opencv颜色斑点检测来检测黑色背景下的小白点。当点很大时,它可以检测到,但当点很小时,它就不能检测到。我认为有一个参数,我们可以设置小点的颜色斑点检测样本,但我没有找到。有人知道吗?或者有人知道更好更快的检测白色的方法吗?注意:在相机中只有一个白点,所有的背景都是黑色的。
这是物体较大时的图片(相机靠近物体):
http://www.axgig.com/images/14410928700656745289.png,这是当对象很小(相机离对象很远):
http://www.axgig.com/images/00768609020826910230.png我想检测白点的坐标,怎么检测?
如果整个背景的其余部分是黑色的,您感兴趣的区域是白色的,您可以通过使用Imgproc模块中的Moments函数找到中心。你可以在维基百科上读到它背后的数学原理,但简单地说,就是对所有非零点的加权位置求和。一旦你有了你的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.