2016-12-08 8 views
0

Я новичок в CV, у меня много изображений, и я хочу сравнить одно изображение с другими в моем наборе данных изображений. Поэтому я решил индексировать все изображения, после того как я сделаю поиск и узнаю ORG, SIFT, прибой Я смотрел for.But я не знаю, как использовать и описатель характерную точку, ниже мой код:Как использовать OpenCV 3.1 ORB в Python3?

import cv2 

nfeatures = 1 
cv2.ocl.setUseOpenCL(False) 
img = cv2.imread('images/forest-copyright.jpg', 0) 
img2 = cv2.imread('images/forest-high.jpg', 0) 

def kpdes(img): 
    orb = cv2.ORB_create(nfeatures=nfeatures) 
    kp = orb.detect(img, None) 
    kp,des = orb.compute(img, kp) 
    print(kp,des) 

kpdes(img) 
kpdes(img2) 

Некоторые части выхода:

[KeyPoint 0000000002A2EF00] [ [252 48 188 124 41 124 81 184 161 112 93 224 225 78 67]]

Как следует использовать дескриптор типа «[[252 48 188 124 41 124 81 184 161 63 167 25 87 63 74 91 192 213 237 0 60 79 243 0 219 235 112 93 224 225 78 67] ] ", Какую дозу это означает? Как я могу хранить их в Elasticsearch и запрашивать их? Я обнаружил, что дескриптор будет изменен, если я увеличу nfeatures. Да, для меня так много вопросов, ждущего помощника!

ответ

0

Here is the implementation for ORB

Вы используете ключевые точки и дескрипторы, чтобы соответствовать два изображения, например. Это можно сделать, найдя совпадения между ними через: cv2.findHomography

Обратите внимание, что если вы пытаетесь сшить изображения, вы должны убедиться, что они являются хорошими совпадениями, следуя соотношению lowe.

Вы также можете использовать их, чтобы определить, находится ли изображение внутри другого, например, подушка на одной картинке на кровати на другом снимке. Ниже приведена ссылка на учебник opencv python для этого: Feature Matching