USBカメラからの映像に特定の色が映ったら合図を出す、という物を作ろうとしています。そして、映像にマスクを掛けて二値化する所までは出来ています。
しかし、その先の「色が映っているか否か」の判断をどのように行えば良いのかわかりません。そういった事を判定するための関数が用意されているのでしょうか?
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答2件
0
ベストアンサー
2017-11-15 P.M更新
流用できたので載せてしまいますが、次からちゃんとコードを載せてくださいね。
teratailの先日の投稿の回答のコードを流用します。
イメージ1 | イメージ2 |
---|---|
original.png
にリネームして走らせてください。
Python
1# -*- coding: utf-8 -*- 2import cv2 3import numpy as np 4########################################## 5img = cv2.imread("original.png") 6cv2.imshow("ORIGINAL",img) 7 8b,g,r = cv2.split(img) 9 10mask =( b > 200) & (g < 200) 11 12img_masked = cv2.bitwise_and(img,img,mask=mask.astype(np.uint8)) 13 14if mask.any(): 15 print("This image has blue color.") 16else: 17 print("This image does NOT have blue color.") 18 19cv2.imshow("ORIGINAL-MAKSED",img_masked ) 20 21cv2.waitKey(0)
以下先日の投稿
コードが乗っていませんのでザクっとしたことを書きます。
ある色が映っているかどうかはif文
で検出できることは分かりますね。
ただここで大事になるのは、「どこに」の話です。
- 画像全体が○○色なのか
- 画像の左上1/4が○○色なのか
- 画像の中のコップが○○色なのか
- 画像の中に少しでも○○色があるのか
これらでだいぶ処理方法が異なってきます。
やりたいこと | 方法 | 関数(イメージ) | 検索キーワード |
---|---|---|---|
全体 | 1pxに縮小+色判定 | cv2.resize | OpenCV resize python |
場所を指定 | くりぬき+色判定 | img[y:y+h,x+w] | OpenCV crop python |
モノを指定 | くりぬき+色判定 | img[y:y+h,x+w] | OpenCV 物体検出 python |
少しでもあれば | 値の検索 | if bool_list.any() | python any boolean |
これでいかがでしょうか?
投稿2017/11/14 22:14
編集2017/11/15 10:08退会済みユーザー
総合スコア0
0
画像を二値化されているという事は、画像の中で見るべき箇所が判っているのでしょう。
あとは、二値化によって切り出された領域の画素の色を調べれることになりますが、その方法は「特定の色」が何を意味するのか次第です。
slashさんが書かれているように、
特定の色(例えばRGBが(24,3F,e0))の画素が含まれる。
対象画素の色の平均値が、特定の範囲に含まれる。
など、様々な可能性が考えられますが、osashimiさんが考えていらっしゃる「特定の色」は、どのようなものなのでしょうか?
質問に詳細を追記すると、適切な回答が得られると思います。
投稿2017/11/15 02:41
総合スコア6915
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/11/15 05:06
退会済みユーザー
2017/11/15 09:46