写真のRチャンネルだけのグレースケール画像が1つあります。そのRチャンネルをRGB画像である新しい画像に書き込もうとしています。理想的には、新しいイメージは古いイメージのように見えますが、赤です。OpenCVで画像を3倍にすると、何が起こりますか?
新しい画像では、古い画像が3回隣り合って表示されます。
グレースケール画像と出力画像が表示されます。ここで
私のコードですが、私はそれは非常に簡単だと思う:
まずMat img_in = imread("in.png", CV_LOAD_IMAGE_GRAYSCALE);
Mat img_out = Mat::zeros(img_in.size(), CV_8UC3);
for (int i = 0; i < img_in.rows; i++)
{
for (int j = 0; j < img_in.cols; j++)
{
img_out.at<Vec3b>(i,j)[2] = img_in.at<Vec3b>(i,j)[2];
}
}
imwrite("test_img_in.png", img_in);
imwrite("test_img_out.png", img_out);
私はそれがインデックスの重複が整理のいくつかの種類だと思ったが、私は組み合わせの多くを試してみました出力画像を水平方向に3倍、垂直方向には常に3倍します。
私は、OpenCV仕様のなかから、CV_8UC3
タイプ(私も他の人も試しました)のように、私が選択したのは、RGBイメージをサポートしていると思っているからです。残念ながら、私はOpenCV自体についてあまり知らないので、私はここで助けを求めています。
PS:これは、3つのグレースケールチャンネル画像からカラー画像を生成したいと考えている全体的なプログラムの一部ですが、現在、整列しているグレースケール画像を合成することになります。投稿したコードは、残りのプログラムから分離されており、このように独自に動作します。
私のOpenCVバージョンは2.4.11です。
を差し引きますが、それは本当に遅くなりますように、このアルゴリズムはなりますので、ちょうど使用しています。なぜ[マージ](http://docs.opencv.org/2.4/modules/core/doc/operations_on_arrays.html#void%20merge%28const%20Mat*%20mv,%20size_t%20count,%20OutputArray%20dst%)を使用しないでください。 29)または[mixChannels](http://docs.opencv.org/2.4/modules/core/doc/operations_on_arrays.html#void%20mixChannels%28const%20Mat*%20src,%20size_t%20nsrcs,%20Mat*%20dst 、%20size_t%20ndsts、%20const%20int *%20fromTo、%20size_t%20npairs%29)?または、BとGのカラープレーンを変換して空白にします。 –
しかし、これは読み込みに問題があるようです。そのコードの一部を表示できますか? –
try = img_in.at(i、j)代わりに –
Micka