2016-03-18 28 views
0

自律ロボットのカメラフィードからの信号をフィルタリングしようとしています。捕捉したフレームをHSVの色空間に変換して、しきい値を設定して信号光とほぼ同じ "赤"の赤いオブジェクトをすべて検出し、ハフ変換を適用して赤色の光を見つけます(明らかにサークル)。ハフ変換を適用するためにHSVをグレースケールに変換する

今ここでの問題は、私はハフは単一チャンネル画像で動作し、私は3で作業しているように見えるので、私はHSVには、以下のコード -

imgFinal = thresholded #initialising the variable with the thresholded image. 
framenew = cv2.cvtColor(threshNew, cv2.COLOR_HSV2GRAY) 
を使用してグレースケールに画像を閾値変換しようとした変換ことがわかったということです

実行中に、 'module'オブジェクトに 'COLOR_HSV2GRAY'属性がありませんというエラーが表示されます。私はこのトピックに関するいくつかの質問を見つけましたが、私の問題に対する答えはありませんでした。私は赤信号を検出するだけで、チャンネルを分離しようとしましたが、その方法をどのように進めるのか分かりません。私は他のアプローチにもオープンしています。
ありがとうございます!

P.S-これは話題にはなりませんが、このプロジェクトではどの言語をお勧めしますか? C++またはPython?私は両方のためのコードを書いた、私はちょうど使用するものについて混乱しています。私は現在Windows 8.1のPCで開発中ですが、最終プロジェクトにはRaspberry Pi 3を実行する必要があります。

+0

通常、グレースケール画像afaikとしてVチャンネルを使用します。 – Micka

+0

チャンネルを分割する方法がわからないというのですか?もしそうなら、これを見てください:http://stackoverflow.com/questions/6699374/access-to-each-separate-channel-in-opencv。私はPythonを使用していますが、それが十分に速い場合は... – IanB

+0

@IanBそれはC++であり、私のコードで動作するはずです(私は今テストできません)。しかし、チャネルを格納するための変数は行列として宣言されていますが、Pythonではどのようにしていますか?私は両方の言語のコードを記述し、より良い動作をする実験によって見つける予定です。 –

答えて

1

HSVのVチャンネルはグレースケール画像のようなものですが、BGR2GRAYグレースケール画像と同じではありません。

これはBGR2GRAYから計算グレースケール画像である:これはHSV画像のVチャネルである一方、

enter image description here

enter image description here

あなたは "より良い" 何かが必要な場合は、 HSV画像を常にBGRに変換し、BGRをopenCVコードでグレイに変換することができます。

+0

私はちょうどグレースケールイメージを必要としません、私はハフ変換で使用できるように私は自分のThresholded HSVイメージのいくつかのフォームが必要です。私はHSVをBGRに変換してからグレースケールに変換してポストバックしようとします。 –

+0

こんにちは!私はHSVからBGRに画像を変換しようとしました。コンパイル時にエラーは発生しませんが、私のソリューションを実行すると、ソリューションがハングアップします(WindowsデスクトップのVisual Studio Express 2012で作成されたC++のコード) –

+0

入力イメージとコードをHSVに変換した方法と変換方法BGRに? – Micka

関連する問題