BGR 画像を読み込もうとしていますが、いくつかの条件を証明するいくつかのピクセルを、読み込んだ画像の幅、高さ、およびタイプを使用して作成した新しい画像にコピーします。タイプは CV_8UC3 です。
Mat initial_Image = imread("image.jpg");
Mat image(img.rows,img.cols, CV_8UC3);
cout<<initial_Image.type()<<endl;
for(int i = 0;i < img.cols ;i++)
{
for(int j = 0;j < img.rows ;j++)
{
Vec3b intensity = initial_Image.at<Vec3b>(j,i);
uchar blue = intensity.val[0];
uchar green = intensity.val[1];
uchar red = intensity.val[2];
image.at<uchar>(j,i) = blue;
image.at<uchar>(j+1,i+1) = green;
image.at<uchar>(j+2,i+2) = red ;
}
}
out.close();
imshow("im", image);
条件を配置していませんが、読み取った画像からそれぞれのすべてのピクセルを新しい作成画像にコピーしようとしました。
私の問題は、読み取った画像が 3 チャンネルの RGB であることですが、新しく作成した画像にピクセルをコピーして画像をプロットすると、3 で割った白黒の画像が表示されます。なぜですか? いくつかの条件に基づいてこれが機能するようになったら、ピクセル値を変更する必要があるため、一部の人が示唆するように copyto 関数を使用できません。条件を付けない理由は、修正を行う作業を容易にするためです。ありがとう。