[英]Change background color for Thresholderd image
我一直在嘗試編寫代碼來使用閾值從圖像中提取裂縫。 但是,我想讓背景保持黑色。 什么是保持外邊界可見和背景黑色的好解決方案。 下面附上原始圖像以及閾值圖像和用於提取此圖像的代碼。
import cv2
#Read Image
img = cv2.imread('Original.png')
# Convert into gray scale
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# Image processing ( smoothing )
# Averaging
blur = cv2.blur(gray,(3,3))
ret,th1 = cv2.threshold(blur,145,255,cv2.THRESH_BINARY)
inverted = np.invert(th1)
plt.figure(figsize = (20,20))
plt.subplot(121),plt.imshow(img)
plt.title('Original'),plt.xticks([]), plt.yticks([])
plt.subplot(122),plt.imshow(inverted,cmap='gray')
plt.title('Threshold'),plt.xticks([]), plt.yticks([])
假設圖像中的圓圈在整個圖像集中停留在一個位置,您可以手動創建中間有一個白洞的黑色“蒙版”圖像,然后將其覆蓋在最終的倒置圖像上。
您可以使用您最喜歡的圖像編輯器的魔術棒工具輕松制作蒙版圖像。
我通過將圓圈向內擴展一個像素來制作這個1 ,以考慮魔術棒工具無法捕獲的一些像素。
然后,您將像這樣使用蒙版圖像:
mask = cv2.imread('/path/to/mask.png')
masked = cv2.bitwise_and(inverted, inverted, mask=mask)
如果圓圈在整個圖像集中沒有停留在同一個位置,您可以嘗試從原始圖像中的所有全黑像素制作蒙版。 這假設“樣本”本身(有裂縫的東西)不包含全黑像素。 雖然這會導致左下角的文本留白。
# make all the non black pixels white
_,mask = cv2.threshold(gray,1,255,cv2.THRESH_BINARY)
1原圖和你倒過來的圖像大小不一樣,所以我做的面具實際上不合適,你得自己做。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.