enter image description here你能幫我分割這個圖像中的矩形對象,試過otsu但它不工作,因爲背景和forground具有相同的值。如何使用python在此圖像中查找矩形形狀?
有沒有其他方法可以做到這一點。
有人可以告訴我如何在這些圖像中找到矩形對象嗎? 圖像是canny邊緣檢測的結果。其實我想在視頻中跟蹤這些矩形,如果你知道怎麼做,請告訴我。 或者至少我想找出一個矩形是否存在。 enter image description here
enter image description here你能幫我分割這個圖像中的矩形對象,試過otsu但它不工作,因爲背景和forground具有相同的值。如何使用python在此圖像中查找矩形形狀?
有沒有其他方法可以做到這一點。
有人可以告訴我如何在這些圖像中找到矩形對象嗎? 圖像是canny邊緣檢測的結果。其實我想在視頻中跟蹤這些矩形,如果你知道怎麼做,請告訴我。 或者至少我想找出一個矩形是否存在。 enter image description here
您可以查看像素的行和列。例如,矩形的頂部邊框行包含比上述行更多的黑色像素。所以我建議你使用垂直(通過行)和水平(通過列)來查找邊界。這是我的腳本來做到這一點:
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
我正在嘗試執行你的代碼...在sum_color + = sum(pix [i,row_num])中得到這個錯誤 TypeError:'int'object is not iterable – user4973313
我修復了一些代碼。使用Python 2.7來運行。 – Fomalhaut
只使用Python 2.7,我仍然得到相同的錯誤。已附加原始圖像[輸入圖像說明] [1] 這是我的canny邊緣檢測代碼..你可以檢查你的代碼。 幀= cv2.imread( '的ImagePath') framegray1 = cv2.cvtColor(幀,cv2.COLOR_BGR2GRAY) framegray = cv2.blur(framegray1,(3,3)) EDGE1 = feature.canny(framegray,標準差= 3) edge11 = ndimage.binary_closing(edge1) edge2 = np.uint8(edge11) edge2 [edge2 == 1] = 255#這是canny邊緣圖像 [1]:https://i.stack.imgur .com/O26np.jpgv – user4973313
大約是一個長方形被認爲是一個矩形,或者你需要90度角和相同的長度,它實際上是一個矩形? – Elia
我想要近似矩形,因爲在視頻幀中形狀可能會略有變化,您可以在兩幅圖像中看到差異。 – user4973313