Я хотел бы создать скрипт в Python (с использованием библиотеки OpenCV), который определяет, какие маркеры находятся на картинке. Маркеры выглядеть примерно так:Обнаружение маркеров в 2D-изображении [Python/OpenCV]
После загрузки изображения, сценарий должен напечатать, какие маркеры в картинке (возврат числа маркеров). Например, если я загрузить эту картинку:
Для этого изображения скрипт должен возвращать три числа: 1, 2 и 3. У меня есть сценарий, который нагрузкой изображения и распознавать фигуры (круги, квадраты и т.д. . - в скрипте ниже только квадраты), но я не имею никакой идеи распознавать маркер целиком, состоящий из нескольких цифр. Есть идеи? Пожалуйста, для любых предложений по алгоритму или любому решению.
import numpy as np
import cv2
img = cv2.imread('B.jpg')
gray = cv2.imread('B.jpg',0)
ret,thresh = cv2.threshold(gray,120,255,1)
contours,h = cv2.findContours(thresh,1,2)
for cnt in contours:
approx = cv2.approxPolyDP(cnt,0.01*cv2.arcLength(cnt,True),True)
print len(approx)
if len(approx)==4:
print "square"
cv2.drawContours(img,[cnt],0,(0,0,255))
cv2.imshow('img',img)
cv2.waitKey(0)
cv2.destroyAllWindows()
Но, очевидно, это не то, что мне нужно, оно окружает только прямоугольники. Спасибо за любые советы и помощь.
1. найти внешние контуры. 2. выберите ограничивающий бокс для каждого контура (который должен быть идентичен контуру, поскольку внешние контуры в ваших изображениях квадраты). 3. измените размер изображения так, чтобы он имел тот же размер, что и ваши ссылочные маркеры. 4. Используйте привязку фаски на изображении canny edge измененной области изображения и меток. 5. Если одно совпадение фаски является достаточно большим, выберите самый маленький из них, как обнаруженный маркер – Micka
, если у вас есть дополнительные искажения перспективы, вы должны найти квадрациклы вместо ограничивающих боксов и использовать перспективное деформирование. – Micka
Я бы, вероятно, попробовал сопоставление функций, как описано здесь http://docs.opencv.org/3.1.0/d1/de0/tutorial_py_feature_homography.html#gsc.tab=0, но я не получил его работу. Также посмотрите этот пост: http://stackoverflow.com/questions/20259025/module-object-has-no-attribute-drawmatches-opencv-python – tfv