Vec3f表示的是3通道float类型的 Vect,就相当于3通道float类型的图像(这是其中一个具体化),解释可以从源代码中看出来。
下面给出一个具体的例子:
Vec3f point = Vec3f(10,10,3.2);//Float, 3 components 一个向量由三个float组成
Mat mat(3,3,CV_32FC3,);//3 channel matrix 三通道
Vec3f v3f = mat.at
这里注释一下:Vec3f是一种数据类型,其是3通道的float,后面的mat.at
原文:https://blog.csdn.net/xfortius/article/details/7761622
Vec的表示 ---- Vec2b,Vec3b,Vec2s,Vec3s
//【1】Vec2b---表示每个Vec2b对象中,存储2个char(字符型)数据
typedef Vec
//【2】Vec3b---表示每一个Vec3b对象中,存储3个char(字符型)数据,比如用这样的对象,去存储RGB图像中的一个像素点
typedef Vec
//【3】Vec4b---表示每一个Vec4b对象中,存储4个字符型数据,用这样的类对象去存储---4通道RGB+Alpha的图像中的像素点
typedef Vec
//【4】Vec2s---表示这个类的每一个类对象,存储2个short int(短整型)的数据
typedef Vec
typedef Vec
typedef Vec
Vec的表示---Vec3b
例如 8U 类型的 RGB 彩色图像可以使用
原文:https://blog.csdn.net/qq_40119386/article/details/88736212
【3.1】Vec
//vec构造的向量为列向量----》》》》》多行一列
Vec vi(1,2,3);//构造并且初始化3x1 3行一列
cout << "vi向量的行数" << vi.rows << endl;
cout << "vi向量的列数" << vi.cols << endl;
Vec vi1(1, 2, 3, 4);//构造4x1 4行一列
cout << "vi1向量的行数" << vi1.rows << endl;
cout << "vi1向量的列数" << vi1.cols << endl;
cout << "访问vi1向量的第0个元素" << vi1[0] << endl;
cout << "访问vi1向量的第1个元素" << vi1[1] << endl;
cout << "访问vi1向量的第2个元素" << vi1[2] << endl;
cout << "访问vi1向量的第3个元素" << vi1[3] << endl;
Vec vi2(1,2);//构造2x1 2行一列
cout << "vi2向量的行数" << vi2.rows << endl;
cout << "vi2向量的列数" << vi2.cols << endl;
cout << "访问vi2向量的第0个元素" << vi2[0] << endl;
cout << "访问vi2向量的第1个元素" << vi2[1] << endl;
Vec3f point1 = Vec3f(10, 10, 3.2);//构造了一个3通道的浮点型向量
cout << point1 << endl;
Vec4f point2 = Vec4f(10, 10, 3.2,5);//构造了一个4通道的浮点型向量
cout << point2 << endl;
Vec3d point3 = Vec3d(10, 10, 3.2);//构造了一个3通道的双精度型向量
cout << point3 << endl;
【3.2】Mat MM = (Mat_
//构建一个3x3的矩阵 矩阵中每一个元素为三通道浮点型的点 边创建边赋值
Mat iamge = (Mat_(2,2)<< Vec3f(1,2,3), Vec3f(1, 2, 3), Vec3f(1, 2, 3), Vec3f(1, 2, 3));//创造并且赋值
for (size_t i = 0; i < iamge.rows; i++)
{
for (size_t j = 0; j (i, j) <(3, 3));//2x2三通道矩阵如何赋值?????? 先创建后赋值
for (int i = 0; i < MM.rows; i++)
{
for (int j = 0; j < MM.cols; j++)
{
for (int c = 0; c < MM.channels(); c++)
{
//给M的每一个元素赋值
MM.at(i, j)[c] = c * 10;
}
}
}
cout << MM << endl;//输出矩阵
//创建多维矩阵 自定义数据类型
typedef Vec Vec5d;
//生成一个2x3x5的Mat,数据为double型
Mat M = Mat::zeros(2, 3, CV_64FC(5));
cout << "channel = " << M.channels() << endl;//输出为5
for (int i = 0; i < M.rows; i++)
{
for (int j = 0; j < M.cols; j++)
{
for (int c = 0; c < M.channels(); c++)
{
//给M的每一个元素赋值
M.at(i, j)[c] = c * 0.01;
}
}
}
cout << M << endl;//输出矩阵
【3.3】Mat image = Mat(500, 500, CV_8UC3);
Mat image3 = Mat(500, 500,CV_8UC3);//构造了一张灰度图像
imshow("image3", image3);
Mat image1 = Mat(500, 500, CV_8UC3, Scalar(0, 0, 255));//构造了一张红色图像 CV_8UC3
imshow("image1", image1);