Opencv的Vec类使用说明(图像像素.at方法访问)

本文详细介绍了Vec类型在图像处理中的应用,包括Vec3b、Vec3f和Vec3d等,用于访问不同灰度级别的图像像素值。Vec类型提供了共轭、点乘、叉乘等操作,并可以转换为对角矩阵。这些概念和操作在计算机视觉和图像处理领域至关重要。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Vec的类型

typedef Vec<uchar, 2> Vec2b;
typedef Vec<uchar, 3> Vec3b;
typedef Vec<uchar, 4> Vec4b;

typedef Vec<short, 2> Vec2s;
typedef Vec<short, 3> Vec3s;
typedef Vec<short, 4> Vec4s;

typedef Vec<ushort, 2> Vec2w;
typedef Vec<ushort, 3> Vec3w;
typedef Vec<ushort, 4> Vec4w;

typedef Vec<int, 2> Vec2i;
typedef Vec<int, 3> Vec3i;
typedef Vec<int, 4> Vec4i;
typedef Vec<int, 6> Vec6i;
typedef Vec<int, 8> Vec8i;

typedef Vec<float, 2> Vec2f;
typedef Vec<float, 3> Vec3f;
typedef Vec<float, 4> Vec4f;
typedef Vec<float, 6> Vec6f;

typedef Vec<double, 2> Vec2d;
typedef Vec<double, 3> Vec3d;
typedef Vec<double, 4> Vec4d;
typedef Vec<double, 6> Vec6d;

通过上面可以看到Vec主要有uchar、short、ushort、int、float、double类型,然后维度有2,3,4,5,6。五种不同类型的维度。

下面对几种常用类型的说明:Vec3b、Vec3f、Vec3d

Vec3b主要用来访问三通道的0-255的灰度图,如:

int b = srcImage.at<Vec3b>(row, col)[0];  //获取像素值b 
int g = srcImage.at<Vec3b>(row, col)[1];  //获取像素值g

int r = srcImage.at<Vec3b>(row, col)[2];  //获取像素值r

Vec3f主要用来访问三通道的0-255实数类型的灰度图,如:

tempImg.at<Vec3f>(j, k)[0] = xResolution*j;
tempImg.at<Vec3f>(j, k)[1] = yResolution*i;
tempImg.at<Vec3f>(j, k)[2] = src.at<float>(j, k);

同理0-62235的16位的三通道灰度图像由Vec<ushort, 3> Vec3w类型进行访问。

上述主要对图像访问方式总结。

Vec类型的方法

这一部分主要对matx.hpp文件进行说明,以向量的角度对它的方法进行说明

1.共轭向量

Vec3f v0(1, 0, 1), v1(3, 2, 1), v2, v3;

v2 = v0.conj(v1);

2.点乘

v2 = v0.dot(v1);

3.v1、v2叉乘

Vec3f vn = v0.cross(v1);

4.转为对角矩阵

Mat m=v1.diag();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

beyond951

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值