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

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

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

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

プログラミング言語

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

関数型プログラミング

関数型プログラミングとは、関数を用いて演算子を構築し、算出し、コンピュータプログラムを構成する枠組みです。

Python

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

Q&A

1回答

5766閲覧

テンプレートマッチングでテンプレート画像を複数にしたいとき

stylenanda

総合スコア10

OpenCV

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

プログラミング言語

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

関数型プログラミング

関数型プログラミングとは、関数を用いて演算子を構築し、算出し、コンピュータプログラムを構成する枠組みです。

Python

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

0グッド

1クリップ

投稿2020/01/20 05:45

pythonを利用して画像解析をしております
テンプレートマッチングでテンプレート画像を複数で行いたいのでglob()を用いてプログラミングを作成しているのですが、エラーが出てしまい、なかなか進みません

エラーの意味と解決方法をどなたか教えてください。

python

1import cv2 2import matplotlib.pyplot as plt 3import numpy as np 4import glob 5 6files = glob.glob('(複数の白黒画像)') 7 8image = cv2.imread('(入力画像)',0) 9 10for fname in files: 11 template = cv2.imread(fname) 12 result = cv2.matchTemplate(image, template, cv2.TM_CCORR_NORMED) 13 H, W = img.shape 14 h, w = template.shape 15 16 print('img.shape', img.shape) 17 print('template.shape', template.shape) 18 19 print(H - h + 1, W - w + 1) 20 print('result.shape', result.shape) 21 min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(result) 22 print(f"max value: {max_val}, position: {max_loc}") 23 fig, ax = plt.subplots(facecolor="w") 24 ax.add_patch(plt.Rectangle(max_loc, w, h, ec="r", lw=1, fc="none")) 25 ax.imshow(cv2.cvtColor(image, cv2.COLOR_GRAY2RGB)) 26 27 plt.show()

エラーはこちらになります。

python

1 result = cv2.matchTemplate(image, template, cv2.TM_CCORR_NORMED) 2cv2.error: OpenCV(4.1.1) C:\projects\opencv-python\opencv\modules\imgproc\src\templmatch.cpp:1104: error: (-215:Assertion failed) (depth == CV_8U || depth == CV_32F) && type == _templ.type() && _img.dims() <= 2 in function 'cv::matchTemplate' 3

参考にしているサイトはこちらです
リンク内容

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

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

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

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

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

guest

回答1

0

エラーの意味

要は,matchTemplateがサポートしている画像データ形式ではないものを渡したということ.
とりあえずimage等の画像読み込みが成功していることからチェックしてみては.

投稿2020/01/20 06:33

fana

総合スコア11632

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

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

stylenanda

2020/01/20 07:24 編集

コメントありがとうございます。 2枚の白黒画像(freeimage1.pngとfreeimage2.png)を img1 = cv2.imread('freeimage1.png',0) img2 = cv2.imread('freeimage2.png',0) print(img1, img2) で読み込んだときにはNoneとは出なかったのですが、きちんと読み込んでいるということであっていますか
oasis_red

2020/01/28 06:09

それをimwriteしなおしてみるのはどうでしょうか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問