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运行它以找到相似的图像。我已经覆盖了第二部分,这只是背景噪音,我的命中率太低 –