logo头像

小玉的技术博客

openCV之像素值的读写

at()函数

函数 at()来实现读去矩阵中的某个像素,或者对某个像素进行赋值操作。下
面两行代码演示了 at()函数的使用方法。

1
uchar value = grayim.at<uchar>(i,j);//读出第i行第j列像素值 grayim.at<uchar>(i,j)=128; //将第i行第j列像素值设置为128

如果要对图像进行遍历,可以参考下面的例程。这个例程创建了两个图像, 分别是单通道的 grayim 以及 3 个通道的 colorim,然后对两个图像的所有像素值 进行赋值,最后现实结果。

1
2
3
4
5
6
7
#include <iostream> #include "opencv2/opencv.hpp" using namespace std; using namespace cv; int main(int argc, char* argv[]) { Mat grayim(600, 800, CV_8UC1); Mat colorim(600, 800, CV_8UC3); //遍历所有像素,并设置像素值 for( int i = 0; i < grayim.rows; ++i) for( int j = 0; j < grayim.cols; ++j ) grayim.at<uchar>(i,j) = (i+j)%255; //遍历所有像素,并设置像素值 for( int i = 0; i < colorim.rows; ++i) for( int j = 0; j < colorim.cols; ++j )
{ Vec3b pixel; pixel[0] = i%255; //Blue
pixel[1] = j%255; //Green
pixel[2] = 0; //Red
colorim.at<Vec3b>(i,j) = pixel; } //显示结果 imshow("grayim", grayim); imshow("colorim", colorim);
waitKey(0); return 0;
}

支付宝打赏 微信打赏

赞赏是不耍流氓的鼓励