我正在建立一个图像相似性程序,因为我是简历中的一个初学者,我与一位专家进行了交谈,他给了我以下推荐的步骤以获得真正的基本功能:
第一点很容易,但我在第2步开始感到困惑。这是我到目前为止编写的代码:
import cv2
import numpy as np
dictionarySize = 20
BOW = cv2.BOWKMeansTrainer(dictionarySize)
for imgpath in ['testimg/testcropped1.jpg','testimg/testcropped2.jpg','testimg/testcropped3.jpg']:
img = cv2.imread(imgpath)
gray= cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
dst = cv2.cornerHarris(gray,2,3,0.04)
sift = cv2.xfeatures2d.SIFT_create()
kp = sift.detect(gray,None)
kp,des = sift.compute(img,kp)
img=cv2.drawKeypoints(gray,kp,img)
cv2.imwrite('%s_keypoints.jpg' % imgpath, img)
BOW.add(des)
我使用SIFT提取一些特征然后我尝试构建每个图像描述符的BOVW。问题是我不知道这是否正确以及如何获得直方图。