リンク内容### OpenCV(python)で物体認識 特徴点抽出 ORB
opencv4.1.1
python 3.5
を利用中です。
特徴点をORBで抽出し、比較したいです
発生している問題・エラーメッセージ
matches = bf.knnMatch(des1,des2, k=2) Assertion failed) type == src2.type() && src1.cols == src2.cols && (type == CV_32F || type == CV_8U) in function 'cv::batchDistance'
該当のソースコード
import numpy as np import cv2 img1 = cv2.imread('dollar.jpg',0) img2 = cv2.imread('dollar1.jpg',0) #特徴抽出機の生成 detector = cv2.ORB_create() #kpは特徴的な点の位置 destは特徴を現すベクトル kp1, des1 = detector.detectAndCompute(img1, None) kp2, des2 = detector.detectAndCompute(img2, None) #特徴点の比較機 bf = cv2.BFMatcher() matches = bf.knnMatch(des1,des2, k=2) #割合試験を適用 good = [] match_param = 0.6 for m,n in matches: if m.distance < match_param*n.distance: good.append([m]) #cv2.drawMatchesKnnは適合している点を結ぶ画像を生成する img3 = cv2.drawMatchesKnn(img1,kp1,img2,kp2,good, None,flags=2) cv2.imwrite("shift_result.png", img3)
試したこと
https://www.tech-tech.xyz/sift-surf-akaze.html
こちらのサイトを主に参考にしました。
プログラミングも同じです。
画像も同じ画像を使用しています。
補足情報(FW/ツールのバージョンなど)
あなたの回答
tips
プレビュー