OpenCVを使った機械学習プログラムについて
『pythonによるAI・機械学習・深層学習アプリの作り方』という本を参考に、OpenCVを使った輪郭抽出プログラムを作っています。
その中で以下のようなエラーが発生しました。
プログラミング初心者ということもあり説明不足な所もあると思いますが、お力を貸していただけると幸いです。
発生している問題・エラーメッセージ
Traceback (most recent call last): File "C:\Users\k18021kk\Google ドライブ\python_practice\20190217\find_contours.py", line 22, in <module> x , y , w , h = cv2.boundingRect(pt) cv2.error: OpenCV(4.0.0) C:\projects\opencv-python\opencv\modules\imgproc\src\shapedescr.cpp:741: error: (-215:Assertion failed) npoints >= 0 && (depth == CV_32F || depth == CV_32S) in function 'cv::pointSetBoundingRect'
該当のソースコード
python
1import cv2 2import matplotlib.pyplot as plt 3 4img = cv2.imread("test.jpg") 5img = cv2.resize(img , (300 , 169)) 6 7gray = cv2.cvtColor(img , cv2.COLOR_BGR2GRAY) 8gray = cv2.GaussianBlur(gray , (7 , 7) , 0) 9im2 = cv2.threshold(gray , 140 , 240 , cv2.THRESH_BINARY_INV)[1] 10 11plt.subplot(1 , 2 , 1) 12plt.imshow(im2 , cmap = "gray") 13 14cnts = cv2.findContours(im2 , cv2.RETR_LIST , cv2.CHAIN_APPROX_SIMPLE)[1] 15 16for pt in cnts: 17 x , y , w , h = cv2.boundingRect(pt) 18 if w < 30 or w > 200: continue 19 print(x , y , w , h) 20 cv2.rectangle(img , (x , y) , (x + w , y + h) , (0 , 255 , 0) , 2) 21 22plt.subplot(1 , 2 , 2) 23plt.imshow(cv2.cvtColor(img , cv2.COLOR_BGR2RGB)) 24plt.savefig("find_contours.png" , dpi = 200) 25plt.show() 26
試したこと
1.要所要所でprintしてちゃんと変数に格納されているかどうかの確認
2.cv2.boundingRect()の使い方を検索して確認
3.ライブラリのバージョンの確認
補足情報(FW/ツールのバージョンなど)
Python 3.6.5
opencv-python 4.0.0.21
matplotlib 2.2.2
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/02/19 08:25