到目前为止,我可以通过here给出的代码获得图像中最大轮廓的坐标,即没有黑色部分的图像。
例如,第一张图像的坐标(1598 x 1288):
(请注意**cv2.approxPolyDP()**
输出的坐标为(y,x)
,与惯例相反)
[column# row#]
[[[ 1 358]]
[[ 1 1288]]
[[ 1598 1288]]
[[1598 1]]
[[677 1]]
[[677 358]]
在这种情况下,我可以找到黑色补丁的坐标,如下所示:
1)由于补丁位于左上方(假设我们知道这一点),因此必须有2对坐标,如[min.col.# , row#]
。在这里,[1 358] and [1 1288]
。从中获取最小行#(here 358
)。这将是黑色补丁的最大行#。 (假设左上角是[1 1]
而非[0 0]
)
2)搜索[some_col.# 358]
之类的坐标(从上一步中提取的行#)。在这里,我们得到[677 358]
。因此677
是黑色补丁的最大列#。
3)黑色补丁的点数变为[1 1], [1 358], [677 358], [677 1]
这当然是一种非常笨拙的确定坐标的方法,还需要了解补丁的位置(左上,右上,右下,左下)。
确定轮廓后,应该很容易知道黑色斑块的坐标。
你有什么建议?
除了查找轮廓和边界矩形外,还有其他在图像中查找黑色斑点的方法,如链接中所示?