我正在尝试加载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);
我没有设置条件,但我尝试将读取图像中的所有相应像素复制到新创建的图像中。
我的问题是,读取的图像是三通道的RGB图像,但是当我通过将像素复制到新创建的图像中来绘制图像时,它会给我一个黑白图像,其值除以3。为什么?由于我必须根据某些条件更改像素值,因此我不能使用一些人建议的copyto函数。我之所以不设置条件是为了方便纠正工作。谢谢。