我正在尝试加载 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 函数。我不设置条件的原因是为了简化完成更正的工作。感谢你。