如何以特定顺序检测多个正方形中心? (OpenCV 3.4.6,C ++)已编辑

时间:2019-07-11 14:30:17

标签: opencv

我想知道是否有一种方法可以检测到所有正方形的中心,但是以特定顺序进行。我已经编写了点的检测和存储,但是我需要按照特定的顺序来检测它们。

我将提供一张图像,然后在该图像上写上特定的检测顺序(涂上油漆)。

![检测顺序]:https://imgur.com/a/b3i0lxz

当前,它从下至上检测(4-> 3-> 2-> 1-> 6-> 5)。我希望订单为1-> 2-> 3-> 4-> 5-> 6,如图像上所示。

我目前唯一的想法是使用push_back / push_front存储的点。另外,我的另一个想法是制作6个if语句来检测图像的特定部分...例如

if(rect_position[0]) 
  center_point[0] = rotatedRect.center
else if(rect_position[1])
  center_point[1] = rotatedRect.center
.
.
.

其中 rect_position [0] 将保存x0,y0,x1,y1(基本上是另一个矩形,如果检测到的点在该矩形内,则写入该点)。相机不会动,小幅移动脸部将保持静止。

此外,我想使用鼠标指定 void CallBackFunc 来指定顺序,但是我也不允许这样做,因为教授希望检测是自动的。

任何东西都可以帮助:教程,提示,新想法, 非常感谢。

我存储的点如下:

for (int i = 0; i < contours.size(); ++i) {
  center_points[i] = rotatedRect.center;
}

使用inRange和findContours函数以及RotatedRect检测平方。如果需要,我可以提供更多代码,我只需要一个解决方案。

0 个答案:

没有答案