質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
OpenCV

OpenCV(オープンソースコンピュータービジョン)は、1999年にインテルが開発・公開したオープンソースのコンピュータビジョン向けのクロスプラットフォームライブラリです。

プログラミング言語

プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

ループ

ループとは、プログラミングにおいて、条件に合致している間、複数回繰り返し実行される箇所や、その制御構造を指します

関数

関数(ファンクション・メソッド・サブルーチンとも呼ばれる)は、はプログラムのコードの一部であり、ある特定のタスクを処理するように設計されたものです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

1回答

531閲覧

for文を利用した時のエラーについて

stylenanda

総合スコア10

OpenCV

OpenCV(オープンソースコンピュータービジョン)は、1999年にインテルが開発・公開したオープンソースのコンピュータビジョン向けのクロスプラットフォームライブラリです。

プログラミング言語

プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

ループ

ループとは、プログラミングにおいて、条件に合致している間、複数回繰り返し実行される箇所や、その制御構造を指します

関数

関数(ファンクション・メソッド・サブルーチンとも呼ばれる)は、はプログラムのコードの一部であり、ある特定のタスクを処理するように設計されたものです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

1クリップ

投稿2020/01/30 01:17

編集2020/01/30 01:55

python
Opencv
初心者です。よろしく御願いします。

pythonでテンプレートマッチングを行いたいのです

python

1import cv2,matplotlib 2import numpy as np 3import matplotlib.pyplot as plt 4 5img = cv2.imread('(写真1)',0) #after 6template = cv2.imread('(写真2)',0) #before 7 8def draw_window(x, y, dy): 9 templates_roi = [template[y:y+50, x:x+50],template[y+dy:y+dy+50,x:x+50]] 10 for r in templates_roi: 11 img_copy = img.copy() 12 template_roi = eval(r) 13 result = cv2.matchTemplate(img_copy, template_roi, cv2.TM_CCORR_NORMED) 14 minVal, maxVal, minLoc, maxLoc = cv2.minMaxLoc(result) 15 print("max value: {}, max Location: {}".format(maxVal, maxLoc)) 16 fig, ax = plt.subplots(facecolor="w") 17 ax.add_patch(plt.Rectangle(maxLoc, 50, 50, ec="r", lw=1, fc="none")) 18 ax.imshow(cv2.cvtColor(img_copy, cv2.COLOR_BGR2RGB)) 19 plt.show()

テンプレート画像からROI抽出を行い、抽出したtemplate_roiとimg_copyでテンプレートマッチングを行いたいです。
ROI抽出は2回行いたいのでfor文でループさせているのですが次のようなエラーが検出します。

python

1>>> from ... import* 2>>> draw_window(460,280,400) 3Traceback (most recent call last): 4 File "<stdin>", line 1, in <module> 5template_roi = eval(r) 6TypeError: eval() arg 1 must be a string, bytes or code object

繰り返ししたいのが、計算手法などでなく、画像だからエラーが出るのでしょうか
エラーの解決方法をどなたか教えてください。

リンク内容

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

LouiS0616

2020/01/30 01:50

evalは何の為に使っているのでしょう?
stylenanda

2020/01/30 01:57

参照したリンク内容を追加しました リンク内容のサイトでevalを利用していたので利用下だけです 無知で申し訳ないのです
LouiS0616

2020/01/30 02:07

evalを取り除いたらエラーが変わると思いますが、どうでしょう。
stylenanda

2020/01/30 02:15

eval()の文を消したらエラーがなくなりました ありがとうございます
guest

回答1

0

opencvのチュートリアルのようにピクセル値にはアクセスします(特にImageRoiの項目です)

投稿2020/01/30 01:47

DaMik

総合スコア38

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

DaMik

2020/01/30 01:56

すいません、修正前の質問に答えてしまいました。
stylenanda

2020/01/30 01:59

templates_roi = [template[y:y+50, x:x+50],template[y+dy:y+dy+50,x:x+50]] に修正したらエラーが消えました。 ありがとうございます
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問