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

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

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

MatplotlibはPythonのおよび、NumPy用のグラフ描画ライブラリです。多くの場合、IPythonと連携して使われます。

NumPy

NumPyはPythonのプログラミング言語の科学的と数学的なコンピューティングに関する拡張モジュールです。

Python

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

Q&A

1回答

1142閲覧

画像認識で輪郭抽出に用いるcv2のValueErrorが解決できない

seyu0930

総合スコア20

Matplotlib

MatplotlibはPythonのおよび、NumPy用のグラフ描画ライブラリです。多くの場合、IPythonと連携して使われます。

NumPy

NumPyはPythonのプログラミング言語の科学的と数学的なコンピューティングに関する拡張モジュールです。

Python

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

0グッド

0クリップ

投稿2021/06/17 01:23

前提・実現したいこと

画像検出のプログラムで輪郭を抽出したく、参考書をもとにかいているのですが

ValueError: not enough values to unpack (expected 3, got 2)

というエラーが出てしまいわかりません。変数と要素の数が一致しないというものらしいのですが、いろいろ試してみたものの解決できませんでした。教えてくださる方がいらっしゃいましたら教えてください。

該当のソースコード

python

1# 輪郭を抽出 2import cv2 3import matplotlib.pyplot as plt 4 5img_bgr=cv2.imread('earth15_02.jpg') 6img_gray=cv2.cvtColor(img_bgr,cv2.COLOR_BGR2GRAY) 7retval,thresh=cv2.threshold(img_gray,88,255,0) 8img,contours,hierarchy=cv2.findContours(thresh,cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE) 9 10result_img=cv2.drawContours(img,contours,-1,(0,0,255),3) 11 12# 13plt.imshow(result_img); 14plt.show() 15

試したこと

cv3からcv4に変わったということは分かるのですが画像認識について始めたばかりで良くわかりませんでした。

参考になりそうなページ
https://qiita.com/rareshana/items/6a2f5e7396f28f6eee49

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

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

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

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

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

guest

回答1

0

[OpenCV] ValueError: not enough values to unpack (expected 3, got 2)

に書かれているようにfindContoursの仕様が変わりました。

img,contours,hierarchy=cv2.findContours(thresh,cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)

contours,hierarchy=cv2.findContours(thresh,cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)
に変更してください。

おそらくそのコードは古いバージョン用のものですので、OpenCV – findContours で画像から輪郭を抽出する方法あたりを参考にされた方が良いと思います。

投稿2021/06/17 01:59

編集2021/06/17 01:59
ppaul

総合スコア24666

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

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

seyu0930

2021/06/17 02:51 編集

回答ありがとうございます。そのように変更しますと result_img=cv2.drawContours(img,contours,-1,(0,0,255),3) の部分のimgをthreshに書き換えると画像は表示されるのですが正直これが正解かわからないです。どう対処すればいいでしょうか?
jbpb0

2021/06/17 07:09

> imgをthreshに書き換えると img_bgr か img_gray に変えるのでは??
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問