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

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

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

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

1回答

2959閲覧

cv2.findContours()のエラーが直せません

taku_python

総合スコア11

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2019/05/02 05:25

前提・実現したいこと

プログラミング超初心者です、、、。cv2.findContours()で"flower.jpg"の輪郭描出をしようとしたのですが、以下のようなエラーメッセージが出てしまいます。30分色々調べてみたのですが、よく分からず初めて質問させていただきました。レベルの低い質問をしてしまい申し訳ございませんが、ご教授お願いいたします、、、。

発生している問題・エラーメッセージ

--------------------------------------------------------------------------- error Traceback (most recent call last) <ipython-input-15-7a588cd4f199> in <module>() 18 19 for pt in cnts: ---> 20 x,y,w,h=cv2.boundingRect(pt) 21 if w<30 or w>200: continue 22 print(x,y,w,h) 'error: OpenCV(4.1.0) /Users/travis/build/skvark/opencv-python/opencv/modules/imgproc/src/shapedescr.cpp:743: error: (-215:Assertion failed) npoints >= 0 && (depth == CV_32F || depth == CV_32S) in function 'pointSetBoundingRect''

該当のソースコード

Python

1import cv2 2import matplotlib.pyplot as plt 3 4img=cv2.imread("flower.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 11 12plt.subplot(1,2,1) 13plt.imshow(im2,cmap="gray") 14 15cnts=cv2.findContours(im2, 16 cv2.RETR_LIST, 17 cv2.CHAIN_APPROX_SIMPLE)[1] 18 19for pt in cnts: 20 x,y,w,h=cv2.boundingRect(pt) 21 if w<30 or w>200: continue 22 print(x,y,w,h) 23 cv2.rectangle(img, (x,y), (x+w,y+h), (0,255,0),2) 24 25plt.subplot(1,2,2) 26plt.imshow(cv2.cvtColor(img,cv2.COLOR_BGR2rGB)) 27plt.savefig("find_contours.png",dpi=200) 28plt.show()

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

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

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

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

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

guest

回答1

0

ベストアンサー

OpenCV4からfindContoursの戻り値が変更されたようです。
OpenCVを使った数字の認識プログラムの作成時でのboundingRectにおけるエラー(Python)
上記を参考にご自身のコードを修正ください。

投稿2019/05/02 06:59

can110

総合スコア38266

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

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

taku_python

2019/05/02 08:13

早々のご回答ありがとうございます!そうだったのですね。勉強になりました。早速修正してみたいと思います!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問