假设我有一张图像,上面有一个圆和一个正方形。有没有一种方法可以通过图像的矩阵找到这个正方形呢?(只有一个正方形,时间不是真正的问题)。
假设我有一张图像,上面有一个圆和一个正方形。有没有一种方法可以通过图像的矩阵找到这个正方形呢?(只有一个正方形,时间不是真正的问题)。
让我们将所有点分为“亮”和“暗”两类。
寻找亮点,上下的点也是亮的。这些点很可能是边缘的一部分。
同样地:如果一个点(x,y)是亮的,而点(x+1,y)、(x+2,y)也是亮的,但点(x-1,y)和(y-1,y)是暗的,并且在Y方向上类似地,那么你很可能找到了一个左上角。通过这种方式,您可以找到角落,然后从中找到正方形 - 这似乎是一种简单的方法。
for (x,y of every black pixel) {
#those methods should return true if the lines length is more than one pixel
if (hasLineToRight(x,y)&&hasLineToBottom(x,y)) {
otherx=highestXOfLineToRight();
othery=highestYOfLineToBottom();
if (isLine(x,y,x,othery)&&isLine(x,y,otherx,y)) {
addBoxToList(x,y,otherx,othery);
}
}
}
您可能希望使用宽度和高度值最高的盒子。
如果图片中的正方形完美无缺,请检查预期位置是否有边框。 jh的答案中的伪代码应该可以正常工作。