※前提条件:本情報はOpenCV3.1を基づいて説明してる この話が出たのは、普段の画像はRBGのほうが多いだが、OpenCVデフォルトはB, G, Rで順番になっている。Dlib++で画像処理をして、OpenCVで画像を保存する際に、保存した画像が荒くなるケースが多い。原因はRBGの順が異なるため。 以下の例では、OpenCVでカラー画像の色順を分離、入替を説明する。 cv::Mat src = cv::imread("test.jpg", 1); vector<cv::Mat> planes; // 3つのチャネルB, G, Rに分離 cv::split(src, planes); // 保存 cv::imwrite("b.jpg", planes[0]); cv::imwrite("g.jpg", planes[1]); cv::imwrite("r.jpg", planes[2]); // チャネルを入れ替えた画像を作成し保存 cv::Mat dst; vector<cv::Mat> color_shuffle; color_shuffle.push_back( planes[1] ); color_shuffle.push_back( planes[2] ); color_shuffle.push_back( planes[0] ); cv::merge(color_shuffle, dst); cv::imwrite("test.jpg", dst); 上記の方法以外に、もっと簡単な方法もある。 cv::cvtColor(input, output, CV_RGB2BGR); 本当にほしかったのはこういうブログだったんだ コメント: |