Я пытаюсь распознать игральные карты с открытым cv, но у меня есть некоторые проблемы. Во-первых, я хотел бы узнать цвет (сердца, бриллианты, лопаты или клубы). Я смотрел с красными красками. Таким образом, я обнаруживаю цвет и вырезаю алмаз или сердце и пытаюсь распознать с помощью фильтра - я выбираю хорошие совпадения и цвет соответствия, которые будут иметь больше (я уверен, что это глупо, но я не знал, как это сделать). Я получаю результат как один следующим образом:Метод SIFT дает мне плохие результаты, признавая 4 формы
Это код моей функции соответствия:
def match(img, models):
goods = []
for name, value in models:
sift = cv2.xfeatures2d.SIFT_create()
kp1, des1 = sift.detectAndCompute(name, None)
kp2, des2 = sift.detectAndCompute(img, None)
if des1 is None or des2 is None:
continue
bf = cv2.BFMatcher()
matches = bf.knnMatch(des1, des2, k=2)
good = []
if matches is None:
continue
for m, n in matches:
if m.distance < 0.75 * n.distance:
good.append([m])
img3 = cv2.drawMatchesKnn(img, kp1, name, kp2, good, None, flags=2)
plt.imshow(img3), plt.show()
goods.append([len(good), value])
maxi = 0
ret = None
for l, v in goods:
if l > maxi:
maxi = l
ret = v
if maxi < 3:
return 0
return ret
Если у вас есть какие-либо совет, буду признателен.
Таким образом, обнаружение цвета и посевы успешны, у вас есть только проблемы с классифицированием, верно ли алмаз или сердце? – ebeneditos
Да, у меня только проблема с sift – heheszki
SIFT не подчеркивает классификацию фигур, это локальный инвариантный дескриптор, в основном используемый для классификации/сопоставления функций данного изображения, для определения формы вам нужно получить контуры, а затем проверить на sape или связанных с цветом. –