OpenCV中的Vec3b、Vec2i、Vec3f等是什么意思?
Opencv 什么 意思
2023-09-11 14:15:39 时间
在使用OpenCV的Mat类的成员函数at()访问图像(矩阵)的某个像素的值时,需要填写这个像素数据值的vector属性。
为什么像素的数据值有vector属性?因为在OpenCV中的MAT类中,每个像素的数据值有两层属性,一是数据类型,比如无符号8位、无符号16位等;二是数量,比如一个像素的数据值可能由1个数组成,也有可能有2个数组成,也有可能有3个数组成,也有可能有4个数组成,具体由几个数组成,得看原图像有几个通道。
填写像素的数据值vector属性时,我们就需要把上面两层属性明确出来。
标题中的Vec3b、Vec2i、Vec3f等就代表像素数据值的vector属性。
具体的对应关系请大家访问本博文的原文查看,
本博文的原文链接如下:
https://www.hhai.cc/thread-80-1-1.html
使用示例1---图像为单通道的情况:
for( int j = 0; j < rows; j++ )
{
for( int i = 0; i < cols; i++ )
{
xMapImage.at<float>(j,i) = cols - i ;
yMapImage.at<float>(j,i) = rows - j ;
}
}
注意:MAT类成员函数at的第一个参数代表行,第二个参数代表列,大家不要被上面的代码误导了,上面的代码在做坐标映射,所以才把j代定为行,i定义为列。
使用示例2-图像为双通道的情况:
for( int i = 0; i < rows; i++ )
{
for( int j = 0; j < cols; j++ )
{
MapImage.at<cv::Vec2f>(i,j)[0] = cols - j;
MapImage.at<cv::Vec2f>(i,j)[1] = i;
}
}
注意:MAT类成员函数at的第一个参数代表行,第二个参数代表列。
使用示例3-图像为三通道的情况:
for (int i = 0; i < row; i++)
{
for (int j = 0; j < col; j++)
{
tempImage.at<cv::Vec3b>(i, j)[0] = 100;
tempImage.at<cv::Vec3b>(i, j)[1] = 200;
tempImage.at<cv::Vec3b>(i, j)[2] = 300;
}
}
注意:MAT类成员函数at的第一个参数代表行,第二个参数代表列。
相关文章
- 【OpenCV入门指南】第一篇 安装OpenCV
- Android版OpenCV图像处理技术亲自验证[十八]之Optical Flow 光流法(附源码)
- OpenCV每日函数 特征检测和描述模块(2) SIFT类(提取关键点和计算描述符)
- OpenCV每日函数 matchTemplate模板匹配函数
- Opencv学习笔记 OpenCV源码以及模块的组成结构
- Opencv学习笔记 - OpenCV 4机器学习算法简介
- 【OAK开源项目教程】opencv+python实现测量包装盒尺寸和体积
- 编译OpenCV提示opencv_contrib缺少boostdesc_bgm.i等文件
- 成功解决cv2.error: OpenCV(4.1.2) C:projectsopencv-pythonopencvmodulesimgprocsrccolor.cpp:182: err
- Qt添加OpenCV库
- OpenCV使用LBPHFaceRecognizer来实现人脸识别
- macOS python3 opencv 图像 颜色空间
- opencv-Python是什么?
- OpenCV入门(九)快速学会OpenCV8漫水填充floodFill&ROI
- 【youcans 的 OpenCV 例程200篇】122. 形态算法之边界提取
- 【youcans 的 OpenCV 例程200篇】168.图像分割之区域生长
- 【youcans 的 OpenCV 例程200篇】150. 边缘检测梯度算子
- OpenCV这么简单为啥不学——2、逐帧播放视频(VideoCapture函数、waitKey函数、0xFF == ord(‘1‘))
- 如何安装和配置OpenCV?
- 【图像处理OpenCV(C++版)】——5.1 图像平滑之二维离散卷积
- 【OpenCV】Chapter7.图像噪声与滤波器
- C++版本的OpenCV 5.x编译生成opencv-python==5.x(GPU版本)接口并进行调用