其实可以把它当成数组,例如Vec<uchar,3>,就是定义一个uchar类型的,长度为3的数组。
Vec3b,Vec3f是它具体情况下的别名
typedef Vec<uchar,3> Vec3b //为 Vec<uchar,3>定义别名Vec3b
typedef Vec<float,3> Vec3f //为 Vec<float,3>定义别名Vec3f
如有下面的代码:
Mat image = imread("d:/test/apple.jpg", 1); //创建Mat对象,保存一张彩色图像(有3个通道),假设已知图像的数据类型是uchar
image.at<Vec3b>(2,3)[0]=255;//为图像(x,y)位置的像素点B通道重新赋值
image.at<Vec3b>(2,3)[1]=200;//为图像(x,y)位置的像素点G通道重新赋值
image.at<Vec3b>(2,3)[2]=199;//为图像(x,y)位置的像素点R通道重新赋值
image.at
因为图像的数据类型是uchar,有三个通道,所以用
另:
如果image是一个uchar类型的1同道的灰度图像,则可以用image.at
cv::Vec<type, 长度>,以及和 .at(int y, int x)的用法
原文:https://www.cnblogs.com/TearCheer/p/12628798.html