سلام دوست عزیز!
من از این کد استفاده می کنم... در شرایط مختلف راه های بهتری/بهینهتری هست:
void set_r (Mat* source_image, int x, int y, unsigned char c)
{
source_image->data [source_image->step * y + 3*x + 2] = c;
}
void set_g (Mat* source_image, int x, int y, unsigned char c)
{
source_image->data [source_image->step * y + 3*x + 1] = c;
}
void set_b (Mat* source_image, int x, int y, unsigned char c)
{
source_image->data [source_image->step * y + 3*x + 0] = c;
}
unsigned char get_r (Mat* source_image, int x, int y)
{
return source_image->data [source_image->step * y + 3*x + 2];
}
unsigned char get_g (Mat* source_image, int x, int y)
{
return source_image->data [source_image->step * y + 3*x + 1];
}
unsigned char get_b (Mat* source_image, int x, int y)
{
return source_image->data [source_image->step * y + 3*x + 0];
امیدوارم با پارامتری که از نوع Mat هست مشکلی نداشته باشی...
مثلا این خط رو ببین، برای باز کردن:
Mat img = imread (image_file_name, 1);
و مثلا برای ذخیره کردن همین تصویر باز شده:
imwrite (image_file_name, img);
ولی قبل از همه!...:
#include <opencv2/opencv.hpp>
using namespace cv;