Mat类中的at方法的用处:1、获取图像矩阵某点的RGB值
2、改变某点的值
对于单通道的图像,则可以使用:
image.at<uchar>(i, j)
来获取或改变该点的值,而RGB通道的则可以使用:
image.at<Vec3b>(i, j)[0]
image.at<Vec3b>(i, j)[1]
image.at<Vec3b>(i, j)[2]
通过以上三条代码,来分别获取B、G、R三个通道的对应的值。
不过貌似用at取值或改变值来做比较耗时,可以使用Mat的模板子类Mat_<T>来实现获取或改变图像矩阵某点值的效果。
对于单通道的具体使用:
Mat_<uchar> img = image;
img(i, j) = rand() % 255; //取一个255以内的随机数,范围:0~254
//rand是取随机数函数
//% 是取余数函数,将随机数按照255取余数,得到255以内随机数
对于RGB通道的使用:
Mat_<Vec3b> img = image;
img(i, j)[0] = rand() % 255;
img(i, j)[1] = rand() % 255;
img(i, j)[2] = rand() % 255;