アプリ版:「スタンプのみでお礼する」機能のリリースについて

openCVの関数で
cvCvtColor(frameImage, hsvImage, CV_BGR2HSV);
というRGBからHSVへ変換する関数を
openGLと組み合わせたプログラムで使用していたところ,
コンパイルは通るのですが実行すると
Bad number of channels (Incorrect number of channels for this conversion code)
in function cvCvtColor. C:\User\VP\opencv\cv\src\cvcolor.cpp(2440)
と表示されてエラーとなります.

いったい何が原因なのでしょうか??

ちなみに上記関数はopenCVのみのプログラムでは正常に
動作したのを確認しました.
また,エラーが出たプログラムでは,
glutDisplayFunc(display);
glutIdleFunc(idle); //idleの中身はglutPostRedisplay();
としており,このdisplay()関数内にて
上記関数を使用したところこのような現象が起こりました.

分かる方がいらっしゃいましたら,ご回答よろしくお願いいたします.

A 回答 (1件)

もう解決してしまわれたかな・・・?


Bad number of channels (Incorrect number of channels for this conversion code)
訳すと
「チャンネル数が間違っています(この変換コードに合っていません)」
という感じになります。これは
cvCvtColor(frameImage, hsvImage, CV_BGR2HSV);
のframeImageかhsvImageのチャンネル数が変換コード(CV_BGR2HSV)に合ってないっていうことです。チャンネル数はRGBなら3色なので3、グレースケールなら1色なので1、というような感じになります。frameImageとhsvImageを
IplImage* frameImage = cvCreateImage(cvSize(640, 480), IPL_DEPTH_8U, 3);
IplImage* hsvImage = cvCreateImage(cvSize(640, 480), IPL_DEPTH_8U, 3);
                                             ↑ここが重要
というように定義したかと思いますが、この最後の引数が3以外になってたりしてないですか?このあたりのソースコードを見てもらえると原因が分かるかなあと思います。参考までに・・・
    • good
    • 0
この回答へのお礼

実はすでに解決していたのですが・・・

まさにそのとおりでした!!!!
おもしろいくらいそのとおりでしたwww

でも意味はわかっていなかったので、
勉強になりました!!ありがとうございました!!!

お礼日時:2009/10/05 02:30

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!