前提・実現したいこと
OpenCV match結果の間引いたデータをCSVファイルに書き出したい。
発生している問題
うまくいかない。matchはうまくいっているのだが。参照の仕方は間違っているのではないかというやんわりとしためぼしはついているが対処法がわからない。
該当のソースコード
import cv2 import numpy as np img1 = cv2.imread("img1.jpg") img2 = cv2.imread("img2.jpg") akaze = cv2.AKAZE_create() kp1, des1 = akaze.detectAndCompute(img1, None) kp2, des2 = akaze.detectAndCompute(img2, None) bf = cv2.BFMatcher() matches = bf.knnMatch(des1, des2, k=2) ratio = 0.3 good = [] for m, n in matches: if m.distance < ratio * n.distance: good.append([m]) f = open('matches.csv', 'w') fileprint = "distance1,distance2,queryIdx1,queryIdx2,trainIdx1,trainIdx2,imgIdx1,imgIdx2\n" for m, n in matches: fileprint += ( str( m.distance ) + "," + str( n.distance ) + "," + str( m.queryIdx ) + "," + str( n.queryIdx ) + "," + str( m.trainIdx ) + "," + str( n.trainIdx ) + "," + str( m.imgIdx ) + "," + str( n.imgIdx ) + "\n" ) f.write(fileprint) fileprint = "" f.close() f = open('goog.csv', 'w') fileprint = "distance,queryIdx,trainIdx,imgIdx\n" for m in good: fileprint += ( str( m.distance ) + "," + str( m.queryIdx ) + "," + str( m.trainIdx ) + "," + str( m.imgIdx ) + "\n" ) f.write(fileprint) fileprint = "" f.close()
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/09/24 16:59
2019/09/24 17:03 編集
2019/09/24 17:07