Digiclopsで取得した画像をOpenCVで扱う際にとても苦労した。
Digiclops(Triclops)から得られる画像はカラー画像と思い、
CvSize imageSize = cvSize(DEFAULT_IMAGE_WIDTH, DEFAULT_IMAGE_HEIGHT);
image = cvCreateImage(imageSize, IPL_DEPTH_8U,3);
とチャンネル3の画像で受け取り表示したのが、そもそもの間違い。ここでエラーを出してくれればいいものの(勝手です、はい・・・)、このままでウインドウに表示されるのです。何の疑いもなくそのままプログラミングを続けていったら、cvCopyやcvCvtColorなどの関数でエラーが連発し撃沈。
得に、ハフ変換などして線分を抽出した後に線分の色を赤にして元画像に埋め込んだりする時にどうしてもエラーの内容が分からず彷徨う結果に・・・。
つまり、カメラからの画像は、
CvSize imageSize = cvSize(DEFAULT_IMAGE_WIDTH, DEFAULT_IMAGE_HEIGHT);
image = cvCreateImage(imageSize, IPL_DEPTH_8U,1);
で受けて、そのあと、
cvCvtColor(image, show_image, CV_GRAY2RGB);
とRGBに変換して
cvShowImage("ウインドウ名前", show_image);
とすれば一見落着。プログラムが大きかったので原因を突き止めて解決するまで半日を要しました。(-.-)ふ~
とりあえず無意味なハフ変換を載せておきます。
0 件のコメント:
コメントを投稿