###改善案をご教授願いたい
少し前にこちらで、OpenCVで任意の画像をオリジナルマーカーとして読み込む方法を質問させていただきました。
(その時の投稿:https://teratail.com/questions/103524)
おおまかに説明すると
任意画像Aをマーカーとしたとき、マーカーを読取った結果、"任意画像A"と出力される機能
の実装を目指しています。この機能の実装は
- 枠の抽出
- 台形補正
- テンプレートマッチング
これらの方法で実現可能であると親切に教えていただきました。
様々なページを参考に組み合わせた結果、認識率に改善の余地があるものの希望の動作に成功致しました。
ただタイトルにもある通り非常に重くなるのです。原因は以下。
###主要因
- マッチング対象が多い(マーカーは今後増やし続ける)
- 任意の画像であるためサイズがバラバラ
原因はこの2点であると推測でき、同時にこの2点は必須機能となります。
###要因の解釈
python
1# 全部を書くと読みづらくなると思いますので意味合いだけ明示します 2 3cam = cv2.VideoCapture(0) 4while True: 5 6 orig = cam.read()[1] 7 copy = orig.copy() 8 9 for img in マッチング対象画像パスlist: 10 marker = imread(img, 0) 11 size = (img.shape[0], img.shape[1]) 12 13 補正結果 = 台形補正(copy, 台形かど座標4点, size) 14 15 if matching(補正結果, marker) is マッチングしていたら: 16 print("matching!!") 17 プログラム終了
伝わっていただけると嬉しいですが、
while True:を一回通る度に、マッチング対象画像の数だけ、台形補正を行い、マッチング判定を行っている
という構造になっており、sizeを取得するために、このような構造をとっています。
読取るマーカーのサイズが様々なので、sizeを固定してしまうと、ほとんどの場合で縦横比がズレてしまい、マッチングに成功しないので、自分の知識・知恵ではこの構造をとらざるを得ない状態です;
###質問まとめ
- マッチング対象が多い(マーカーは今後増やし続ける)
- 任意の画像であるためサイズがバラバラ
この二つを条件をクリアしたまま、処理を軽くする方法または考え方はないものでしょうか?
是非皆様の知恵をお貸し下さい。宜しくお願い致します。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。