У меня есть похожие изображения с аналогичным фоновым шумом. Используя OpenCV, существует способ обнаружения области (обнаружения контуров) области, охватывающей метку. Или, по крайней мере, можно определить «грубую» ограничительную рамку, охватывающую область этикеток?OpenCV: Обнаружение ограничивающей рамки, покрывающей этикетку
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 и vertically, но я не могу запомнить это имя. Надеюсь, поможет!
Смежные вопросы
- 1. Cocos2d-android обнаружение ограничивающей рамки спрайта
- 2. Обнаружение рамки с OpenCV
- 3. масштаб вращающейся ограничивающей рамки
- 4. Изменение размера ограничивающей рамки
- 5. извлечение минимальной ограничивающей рамки
- 6. Вычислить вершины ограничивающей рамки
- 7. Обнаружение, если флакон имеет этикетку
- 8. opencv распознавание лица, получить координаты «ограничивающей рамки» вокруг изображения
- 9. Как рассчитать центр ограничивающей рамки?
- 10. dvi поколение: нет ограничивающей рамки
- 11. Создание ограничивающей рамки для UIImageView
- 12. Twitter4j получает твиты за пределами ограничивающей рамки
- 13. установка ограничивающей рамки вокруг текста на изображении
- 14. Расширение сегмента линии до ограничивающей рамки
- 15. Вычисление ограничивающей рамки экрана в OpenGL
- 16. Сравнение центроида Блоба с центром ограничивающей рамки
- 17. Вычисление ограничивающей рамки с использованием Javascript
- 18. Numpy: Поиск ограничивающей рамки внутри 2d-массива
- 19. Создание ограничивающей рамки в изображении с прозрачностью
- 20. Формирование ограничивающей рамки только вокруг видимых спрайтов
- 21. Неправильные координаты для ограничивающей рамки в three.js
- 22. Threejs: вычисление ограничивающей рамки повернутого текста
- 23. Расчет геопространственной ограничивающей рамки без данных карты
- 24. VTK перемещает изображение в центр ограничивающей рамки
- 25. Найти центр ограничивающей рамки с фиксированной шириной
- 26. Google Earth Определение уровня масштабирования из ограничивающей рамки
- 27. Обнаружение черной/пустой рамки в видео с использованием OpenCV
- 28. Есть ли критерии размера и положения ограничивающей рамки обнаруженной грани
- 29. Обнаружение обрыва кадра в OpenCV
- 30. ошибка компиляции рамки opencv
Что об использовании более высокого порога, а затем найти большой подключенный компонент?. –
Не могли бы вы прояснить ситуацию, вы хотите найти похожие ярлыки на разных фотографиях? или вы хотите просто выбрать ярлык сам и удалить фон? –
Я хочу выбрать ярлык и удалить фон. Как только я извлечу область, содержащую метку, я могу запустить ее с помощью SURF/SIFT, чтобы найти подобное изображение. У меня уже есть вторая часть, это просто с фоновым шумом, мой хит-рейтинг слишком низкий –