得られたインデックスの値を保存するファイル名に反映させたいのですが,
import cv2 import os import glob IMG_SIZE = (200, 200) files = glob.glob("./match/./pura/*") for i, f in enumerate(files): target_img1 = cv2.imread(f) target_img = cv2.cvtColor(target_img1 , cv2.COLOR_BGR2GRAY) target_img = cv2.resize(target_img, IMG_SIZE) bf = cv2.BFMatcher(cv2.NORM_HAMMING) detector = cv2.ORB_create() (target_kp, target_des) = detector.detectAndCompute(target_img, None) rets=[] files = glob.glob("./match/./1/*") for j, f in enumerate(files): img = cv2.imread(f) img = cv2.resize(img, IMG_SIZE) gray = cv2.cvtColor(img, cv2.IMREAD_GRAYSCALE) (comparing_kp, comparing_des) = detector.detectAndCompute(gray, None) matches = bf.match(target_des, comparing_des) dist = [m.distance for m in matches] ret = sum(dist) / len(dist) print(j, ret) rets.append(ret) small=min(rets) small_index=rets.index(min(rets)) save_path = './match/./b/./small_index/_%d.jpg'%i save_path = save_path % small_index print(save_path) cv2.imwrite(save_path, target_img1) コード
retsのリストに5個の数値が格納されており,この中の最小の数値のインデックスの値で保存先のファイルを決めたいです。
match-bの中に0,1,2,3,4の5つのファイルを作っており,この5個のどれかに保存という流れです。
現状下記のエラーが発生しております。
0 78.85875706214689
1 78.33333333333333
2 91.95197740112994
3 80.79943502824858
4 79.16666666666667
Traceback (most recent call last):
File "match2.py", line 37, in <module>
save_path = save_path % small_index
TypeError: not all arguments converted during string formatting
どなたかよろしくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/12/27 06:19 編集
2019/12/27 06:34 編集
2019/12/27 06:54
2019/12/27 07:00
2019/12/27 07:06
2019/12/27 07:09
2019/12/27 07:15
2019/12/27 07:19 編集
2019/12/27 07:22