簡體   English   中英

更改閾值圖像的背景顏色

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM