2016-10-19 126 views
0

我有類似的背景噪聲類似的圖像。 使用OpenCV,有沒有辦法檢測覆蓋標籤區域的區域(檢測輪廓)。 或者至少是否有可能檢測到覆蓋標籤區域的「粗糙」邊框?OpenCV:檢測覆蓋標籤的邊框

enter image description here

+2

怎麼樣使用了較高的門檻,然後找出最大的連通分量? –

+1

可否請您澄清一下,您想在不同的照片上找到類似的標籤?或者你想只選擇自己的標籤並刪除背景? –

+0

我想選擇標籤並刪除背景。一旦我提取包含標籤的區域,我可以使用SURF/SIFT運行它以找到相似的圖像。我已經覆蓋了第二部分,這只是背景噪音,我的命中率太低 –

回答

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_horizo​​ntally和垂直,但我不記得它的名字。希望能幫助到你! enter image description here

enter image description here