分割機能を使用して作成した 3 つのグレースケール画像があります。ここで、カラー画像を再生成したいと思います。次のコードを試しましたが、うまくいきませんでした。得られた結果の画像はまだグレースケールでした。
cv::Mat R = cv::imread("/home/r/secret_R.png",0);
cv::Mat G = cv::imread("/home/r/secret_G.png",0);
cv::Mat B = cv::imread("/home/r/secret_B.png",0);
std::vector<cv::Mat> array_to_merge;
array_to_merge.push_back(R);
array_to_merge.push_back(G);
array_to_merge.push_back(B);
cv::Mat color;
cv::merge(array_to_merge, color);
それで、 cvtColor 関数を試しました:
cv::Mat color_converted;
cv::cvtColor(color, color_converted, CV_GRAY2BGR);
cv::imwrite("/home/r/color_secret.png",color_converted);
しかし、どうやら、単一のチャネルしか持たないソース イメージに対してのみ機能します。グレースケール画像の 1 つを渡しました。
cv::cvtColor(R, color_converted, CV_GRAY2BGR);
しかし、それでもカラー画像を取り戻すことはできませんでした。結果の画像はまだグレースケールでした
私は何を間違っていますか?カラー画像を元に戻すにはどうすればよいですか?