画像の特定の色を二値化する処理をおこなっているのですが、うまくいかないので質問します。
まず、RGBで確保している元画像をHSV画像に変換します。
Imgproc.cvtColor(mrgb, mask, Imgproc.COLOR_RGB2HSV);
次にそれを予め設定した上限値と下限値の範囲内とそれ以外にわけて二値化します。
Core.inRange(mask, lowerb, upperb, mask);
ここまではエラーが出ることなく二値化画像を表示できます。
しかし,この二値化した画像をRGBの画像に戻す以下の処理を実行するとエラーが出ます。
Imgproc.cvtColor(mask, mask, Imgproc.COLOR_HSV2RGB);
ログを見ると以下のエラーが出ています。
OpenCV Error: Assertion failed (scn == 3 && (dcn == 3 || dcn == 4) && (depth == CV_8U || depth == CV_32F)) in void cv::cvtColor(cv::InputArray, cv::OutputArray, int, int), file /hdd2/buildbot/slaves/slave_ardbeg1/50-SDK/opencv/modules/imgproc/src/color.cpp, line 4042
チャンネル数の設定がおかしいのでしょうか?変換で使用した変数の設定は以下のようにしています。
mrgb = new Mat (width, height, CvType.CV_8UC3);
mask = new Mat (mrgb.size(), CvType.CV_8UC3);
具体的な解決策を教えていただけると助かります。よろしくお願いします。

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/02/11 11:20