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

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

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

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

Python

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

Q&A

解決済

1回答

568閲覧

Python OpenCV 色 index

lebdom_11

総合スコア6

OpenCV

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

Python

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

0グッド

0クリップ

投稿2020/11/17 07:36

前提・実現したいこと

現在、Hough変換で円を検出し
検出した円の内部、全ての画素を調べ
色の条件

hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV) bin_img = cv2.inRange(hsv, (30, 40, 0), (90, 255, 255))

一つの円の7割以上が、条件を満たしているならば円を描画。
未満なら描画しないというプログラムを作成しました。

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

Traceback (most recent call last): File "E:\K\pg\test.py", line 58, in <module> if bin_img[j, i] == 0: IndexError: index 594 is out of bounds for axis 0 with size 594

該当のソースコード

Python

1hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV) 2bin_img = cv2.inRange(hsv, (30, 40, 0), (90, 255, 255)) 3count1 = 0 4count2 = 0 5 6# 検出結果を描画する。 7if circles is not None: 8 circles = circles.squeeze(axis=0) # (1, NumCircles, 3) -> (NumCircles, 3) 9 10 for cx, cy, r in circles.astype(int): 11 12 #iとjを、円の端から端の四角形の範囲に設定 13 for i, j in zip(range(cx-r, cx+r), range(cy-r, cy+r)): 14 a = (cx, cy) 15 b = (i, j) 16 17 #(i,j)と円の中心(cx,cy)との距離を計算 18 answer = distance.euclidean(a, b) 19 20 #その距離answerがr内の時、countする。 21 if answer <= r: 22 count1 += 1 23 24 #円の内部の色が条件を満たしているとき、countする。 25 if bin_img[j, i] == 0: 26 count2 += 1 27 continue 28 29 #円内部の3割が条件を満たしていないとき(円内部の7割が色の条件を満たしてるとき)であれば円を描画 30 if (count2 / count1) * 100 <= 30: 31 # 円の描画 32 # 円の円周を描画する。 33 cv2.circle(img, (cx, cy), r, (0, 255, 0), 2) 34

わからないこと

該当のソースコードをいじる前(前回の質問の時)までは、

if bin_img[j, i] == 0:

これによるエラーは起きていなかったので、なぜエラーが起きたのかわからないです。

別の部分のコードが何か間違っていますか?

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

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

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

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

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

guest

回答1

0

自己解決

画像のサイズ1056×594を超えて、画素を調べていたため起こったエラーでした!
解決しました!

投稿2020/11/18 15:16

lebdom_11

総合スコア6

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問