0
A
回答
2
我試圖完成這項任務,這可能不會讓一概而論這種算法主要問題是如何選擇合適的輪廓。我有兩個值(輪廓長度)3108和2855.您可以嘗試取出所有照片(如果它們距離相機距離相近),並在3050和2750之間設置所需輪廓的閾值,但不能保證它可以正常工作。因此,這是我怎麼去除背景(全碼):
import cv2
import numpy as np
image=cv2.imread('C:/Users/srlatch/Desktop/of8cA.png')
img = cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)
def clear_vertical(img, target):
for i in range(img.shape[1]):
for j in range(img.shape[0]):
if img[j][i]:
break
else:
target[j][i]=[0,0,0]
def clear_horizontal(img, target):
for i in range(img.shape[0]):
for j in range(img.shape[1]):
if img[i][j]:
break
else:
target[i][j]=[0,0,0]
def turn_off(img):
for i in range(img.shape[0]):
for j in range(img.shape[1]):
img[i][j]=0
def turn_on(img,result):
for i in result:
img[i[0][1]][i[0][0]]=255
def f(list):
max=[]
for i in list:
if len(i)>len(max):
max=i
return max
def rem(ls, thresh):
new_c=[]
for i in ls:
if len(i)>thresh:
new_c.append(i)
return new_c
def rn(ls,min,max):
ret=[]
for i in ls:
if len(i)<max and len(i)>min:
print(len(i))
ret.append(i)
return ret
#ret,tresh = cv2.threshold(img,40,255,cv2.THRESH_BINARY)
kernel = np.ones((2,2),np.uint8)
new=cv2.Canny(img,190,1)
dilated=cv2.dilate(new, kernel)
tresh,c,hr=cv2.findContours(dilated,cv2.RETR_TREE,cv2.CHAIN_APPROX_NONE)
c=rn(c, 2600, 4000)
turn_off(new)
turn_on(new,c[0])
clear_horizontal(new,image)
clear_vertical(new,image)
cv2.imwrite('result_image_end.png',image)
cv2.imshow('wnd',image)
cv2.waitKey(100)
我已經嘗試不同的方法,但這似乎工作比別人更好。我相信在opencv存在函數可以取代clear_horizontally和垂直,但我不記得它的名字。希望能幫助到你!
相關問題
- 1. jQuery UI的標籤覆蓋邊框當窗體
- 2. 僞標籤上的邊框覆蓋:懸停
- 3. 覆蓋的測試標籤ScalaTest
- 4. Bootstrap中的標籤覆蓋文本框
- 5. 在img標籤上覆蓋圖形邊框
- 6. OpenCV中的邊緣檢測
- 7. UIButton標籤覆蓋
- 8. 標籤被覆蓋
- 9. Graphviz的邊緣不可辨/邊緣標籤覆蓋
- 10. boostrap覆蓋複選框標籤css
- 11. 覆蓋邊框圖像
- 12. 如何覆蓋邊框:無?
- 13. 覆蓋的Grails G:link標籤
- 14. 覆蓋圖上的標籤?
- 15. 邊緣檢測iphone opencv
- 16. OpenCV檢測圖像邊界
- 17. Android OpenCV邊緣檢測
- 18. 邊界檢測紙張opencv
- 19. 顏色邊緣檢測+ opencv
- 20. OpenCV ROI和邊緣檢測
- 21. 邊框底部覆蓋邊界左側?
- 22. OPENCV VS GIMP,邊緣檢測在OpenCV中
- 23. 標籤內容覆蓋標籤
- 24. OpenCV標記檢測
- 25. 系統覆蓋檢測器
- 26. jQuery .click()覆蓋標籤
- 27. 如何覆蓋Meta標籤?
- 28. SelectOneMenu標籤是「覆蓋」
- 29. jsPlumb - 連接覆蓋標籤
- 30. 無法覆蓋標籤Tkinter
怎麼樣使用了較高的門檻,然後找出最大的連通分量? –
可否請您澄清一下,您想在不同的照片上找到類似的標籤?或者你想只選擇自己的標籤並刪除背景? –
我想選擇標籤並刪除背景。一旦我提取包含標籤的區域,我可以使用SURF/SIFT運行它以找到相似的圖像。我已經覆蓋了第二部分,這只是背景噪音,我的命中率太低 –