Tôi đang cố gắng để thiết lập một giá trị màu mới cho một số điểm ảnh thành một cv :: Mat hình ảnh mã của tôi là dưới đây:C++ và opencv get và set màu pixel để Mat
Mat image = img;
for(int y=0;y<img.rows;y++)
{
for(int x=0;x<img.cols;x++)
{
Vec3b color = image.at<Vec3b>(Point(x,y));
if(color[0] > 150 && color[1] > 150 && color[2] > 150)
{
color[0] = 0;
color[1] = 0;
color[2] = 0;
cout << "Pixel >200 :" << x << "," << y << endl;
}
else
{
color.val[0] = 255;
color.val[1] = 255;
color.val[2] = 255;
}
}
imwrite("../images/imgopti"+to_string(i)+".tiff",image);
Có vẻ như để có được tốt điểm ảnh trong đầu ra (với cout) tuy nhiên trong hình ảnh đầu ra (với imwrite) các điểm ảnh có liên quan không được sửa đổi. Tôi đã thử bằng cách sử dụng color.val [0] .. Tôi vẫn không thể tìm ra lý do tại sao các màu pixel trong hình ảnh đầu ra không thay đổi. cảm ơn
bởi vì vấn đề là về màu Mat. trong trường hợp uchar, ofc. sử dụng 'uchar & c = image.at (y, x)' –
berak
xin lỗi, tôi muốn bình luận một câu trả lời khác và +1. –