如何使用python在此图像中找到矩形形状?

时间:2016-11-21 07:12:37

标签: python image-processing shape

enter image description here你可以帮我分割这个图像中的矩形对象,试过otsu但是它没有用,因为background和forground有相同的值。

还有其他方法可以做同样的事。

有人可以告诉我如何在这些图像中找到矩形对象吗? 图像是canny边缘检测的结果。其实我想在视频中跟踪这些矩形,如果你知道怎么做,请告诉我。 或者至少我想知道是否存在矩形。 enter image description here

1 个答案:

答案 0 :(得分:0)

您可以查看像素的行和列。例如,矩形的顶部边框行包含的黑色像素比上面的行多得多。所以我建议你使用垂直(通过行)和水平(通过列)传递来查找边框。这是我的脚本:

from PIL import Image

FACTOR = 1.5 # a threashold

img = Image.open("path/to/your/image")
pix = img.load()
size = img.size

# vertical pass
sum_color_arr = []
for row_num in xrange(size[1]):
    sum_color = 0 # calculating of brightness for each row separately
    for i in xrange(size[0]):
        sum_color += pix[i, row_num]
    sum_color_arr.append(sum_color)

for row_num in xrange(size[1] - 1):
    if sum_color_arr[row_num] > FACTOR * sum_color_arr[row_num + 1]:
        print "Top border: y =", (row_num + 1)
    if sum_color_arr[row_num + 1] > FACTOR * sum_color_arr[row_num]:
        print "Bottom border: y =", row_num

# horizontal pass
sum_color_arr = []
for col_num in xrange(size[0]):
    sum_color = 0 # calculating of brightness for each column separately
    for i in xrange(size[1]):
        sum_color += pix[col_num, i]
    sum_color_arr.append(sum_color)

for col_num in xrange(size[0] - 1):
    if sum_color_arr[col_num] > FACTOR * sum_color_arr[col_num + 1]:
        print "Left border: x =", (col_num + 1)
    if sum_color_arr[col_num + 1] > FACTOR * sum_color_arr[col_num]:
        print "Right border: x =", col_num