前提・実現したいこと[
](https://qiita.com/sbtseiji/items/6438ec2bf970d63817b8)大学生の初心者です。Windows10 spyderで作業しています。
PythonとOpenCVで簡易OMR(マークシートリーダ)を作るhttps://qiita.com/sbtseiji/items/6438ec2bf970d63817b8
を参考にペイント画像からqrコードに使われる切り出しシンボルを認識するだけのシステムを作ろうとしています。
画像を切り出す際、範囲を指定する
mark_area={}
mark_area['top_x']= min(loc[1])
mark_area['top_y']= min(loc[0])
mark_area['bottom_x']= max(loc[1])
mark_area['bottom_y']= max(loc[0])
このコードを打ち込んだら以下ののエラーメッセージが発生しました。
発生している問題・エラーメッセージ
![ValueError: min() arg is an empty sequence](21e5893e02714e0feec28e04c00e25b6.jpeg)
該当のソースコード
import numpy as np import cv2 ### マーカーの設定 marker_dpi = 72 # 画面解像度(マーカーサイズ) scan_dpi = 300 # スキャン画像の解像度 # グレースケール (mode = 0)でファイルを読み込む marker=cv2.imread('marker.jpg',0) # マーカーのサイズを取得 w, h = marker.shape[::-1] # マーカーのサイズを変更 marker = cv2.resize(marker, (int(h*scan_dpi/marker_dpi), int(w*scan_dpi/marker_dpi))) ### スキャン画像を読み込む img = cv2.imread('sample.jpg',0) res = cv2.matchTemplate(img, marker, cv2.TM_CCOEFF_NORMED) threshold = 0.7 loc = np.where( res >= threshold) mark_area={} mark_area['top_x']= min(loc[1]) mark_area['top_y']= min(loc[0]) mark_area['bottom_x']= max(loc[1]) mark_area['bottom_y']= max(loc[0]) img = img[mark_area['top_y']:mark_area['bottom_y'],mark_area['top_x']:mark_area['bottom_x']] cv2.imwrite('res.png',img)
試したこと
範囲を指定し、切り取る行を書き込まなければ、指定した画像をそのままグレースケールし、切り出しシンボルが認識されているようなレスポンスは受け取れました。
補足情報(FW/ツールのバージョンなど)
回答1件
あなたの回答
tips
プレビュー