Я пытаюсь загрузить изображение BGR и копировать некоторые пиксели, которые подтверждают какое-либо условие для нового изображения, которое я создал с использованием загруженных изображений ширины, высоты и типа. Тип CV_8UC3.Opencv Mat create Image
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, как могут предположить некоторые. Причина, по которой я ставил условие, - это облегчить работу по исправлению. Спасибо.