2013-04-16 18 views
1

我必須在二進制圖像上進行膨脹 我的問題是在不同尺寸的二進制圖像上進行膨脹操作。如何將比例擴張操作應用於二值圖像?

我想擴張操作比例適用於所有的圖像,並防止像一個車輪的小圖像成爲白色的圓圈。

#image dilation 
import cv2 

path "pathimage" 
gray = cv2.imread(path,0) 
element = cv2.getStructuringElement(cv2.MORPH_CROSS,(6,6)) 
graydilate = cv2.erode(gray, element) #imgbnbin 
graydilate = cv2.erode(graydilate, element) 
#graydilate = cv2.erode(graydilate, element) 

cv2.imshow('erode',graydilate) 
cv2.waitKey() 

ret,thresh = cv2.threshold(graydilate,127,255,cv2.THRESH_BINARY_INV) 
imgbnbin = thresh 
print("shape imgbnbin") 
print(imgbnbin.shape) 
cv2.imshow('binaria',imgbnbin) 
cv2.waitKey() 

可能需要重新調整圖像嗎?

回答

1

您可以執行下列操作:

  • 重新縮放圖像的大小相同。

OR

  • 如果圖像中的物體是不成正比的圖像的大小,然後提取該對象的邊界框,然後確定所述結構元件的尺寸(目前總是6x6)相對於對象的邊界框的大小。這樣你就可以確定形態與物體大小成正比。
+0

對不起,我如何確定結構元素的大小?你會建議我選擇,如果邊界框大小比例如(320,240)更大,使用6x6而不是3x3? – improc

+1

您可能可以決定結構元素的大小約爲邊界框的1%。這樣,如果您的邊界框的大小爲W x H,那麼您的結構元素大小爲0.01W x 0.01H。在你的320x240的例子中,這將被舍入爲3x2。 – Zaphod

相關問題