读写单通道像素,修改单通道像素
参考代码:
// 读取单通道像素 ,修改
Mat dst;
cvtColor(src,dst,CV_BGR2GRAY);
imshow("gray",dst);
int width = dst.cols;
int height = dst.rows;
for(int col=0;col<width;col++)
for(int row=0;row<height;row++)
{
int gray=dst.at<uchar>(row,col);
dst.at<uchar>(row,col) = 255-gray;
}
imshow("grayto",dst);
读写多通道像素,修改单通道像素
参考代码:
Mat dst;
dst.create(src.size(),src.type());
int width = src.cols;
int height = src.rows;
int nc = src.channels();
for(int col=0;col<width;col++)
for(int row=0;row<height;row++)
{
if(nc==1)
{
int gray=src.at<uchar>(row,col);
src.at<uchar>(row,col) = 255-gray;
}
else if(nc==3)
{
int b =src.at<Vec3b>(row,col)[0];
int g =src.at<Vec3b>(row,col)[1];
int r =src.at<Vec3b>(row,col)[2];
dst.at<Vec3b>(row,col)[0]=255-b;
dst.at<Vec3b>(row,col)[1]=255-g;
dst.at<Vec3b>(row,col)[2]=255-r;
}
}
imshow("grayto",dst);