質問: cv::imread("./sea.jpg",CV_LOAD_IMAGE_COLOR);//カラー画像の読み込 み cvtColor(img,hsvImage,CV_RGB2HSV);//画像をRGBからHSVに変換 cv::inRange(hsvImage, cv::Scalar(160, 150, 140), cv::Scalar(255, 255, 255), mask);//色検出でマスク画像の生成 imshow("mask", mask);//マスク画像の表示 cv::waitKey(0);//キー入力待ち時間0秒 return 0; } ```
回答: こんにちは。 ざっと見る限り、プログラムは正しそうに見えます。 結果の2値化画像が真っ黒(全て0)になるというこは、HSV画像がcv::Scalar(160, 150, 140)~cv::Scalar(255, 255, 255)の範囲に入っていないと言うことはないでしょうか? sea.jpgが黄緑色っぽい、くすんでいる、暗い等です。 cv::Scalar(160, 150, 140)の代わりにcv::Scalar(0, 0, 0)とすれば真っ白になるはずです。 もし、そうなれば画像に対するHSV指定が外れている可能性が高いと思います。