我想知道是否有一种方法可以检测到所有正方形的中心,但是以特定顺序进行。我已经编写了点的检测和存储,但是我需要按照特定的顺序来检测它们。
我将提供一张图像,然后在该图像上写上特定的检测顺序(涂上油漆)。
![检测顺序]: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检测平方。如果需要,我可以提供更多代码,我只需要一个解决方案。