
opencv图像处理学习(五十九)——数据与指针
1.1 saturate_cast
是一个 wichtiger工具,用于确保 RGB 值在 0~255 的范围内。
发布日期:2021-05-24 12:40:25
浏览次数:24
分类:精选文章
本文共 1779 字,大约阅读时间需要 5 分钟。
OpenCV 指针与数据类型
1. 指针
在 OpenCV 开发中,指针 是直接操作图像数据的基础工具。以下是关于指针操作的关键知识点:
1.1 saturate_cast
saturate_cast
- 输入为负数时会自动设置为 0
- 输入超过 255 时会自动截断为 255
- 输入值在 0~255 之间则保持不变
uchar value = src;if (src < 0) { value = 0;} else if (src > 255) { value = 255;} else { value = src;}// 或者直接使用 saturate_castvalue = saturate_cast(src);
1.2 OpenCV Mat 数据类型指针 ptr 的使用
Mat 类 型 的 ptr 是一个指针,用于访问图像的内部数据。以下是常见操作:
cv::Mat image = cv::Mat(400, 600, CV_8UC1); // 创建一个宽度为 400、高度为 600、单通道 8 位无符号整型的图像矩阵uchar * data00 = image.ptr(0); // 获取第 0 行的起始指针uchar * data10 = image.ptr (1); // 获取第 1 行的起始指针uchar * data01 = image.ptr (0)[1]; // 获取第 0 行的第 2 个元素的指针
如果你想直接操作图像数据,可以使用更低级的方法:
uchar * data = img.data; // 获取所有数据的指针// 例如:data = img.data + i * img.step + j * img.elemSize();
2. 数据类型
2.1 Mat 数据类型格式
OpenCV Mat 的数据类型 格式为 CV_<位数>(U|S|F)C<通道数>:
- bitDepth:位数值为 8、16、32、64
- U|S|F:表示数据类型,U 为无符号整型,S 为有符号整型,F 为浮点型
- C:通道数,后续数字表示具体通道数
常见类型:
- CV_8UC1:单通道 8 位无符号整型(灰度图像)
- CV_8UC3:三通道 8 位无符号整型(RGB 图像)
2.2 单通道对应关系
以下是 OpenCV 数据类型与基本数据类型的对应关系:
OpenCV 数据类型 | 基本数据类型 | 取值范围 |
---|---|---|
CV_8U | uchar | 0~255 |
CV_8S | char | -128~127 |
CV_16U | ushort | 0~65535 |
CV_16S | short | -32768~32767 |
CV_32S | int | -2^31~2^31-1 |
CV_32F | float | -DBL_MAX~DBL_MAX |
CV_64F | double | -DBL_MAX~DBL_MAX |
2.3 多通道对应关系
多通道数据类型的对应关系如下:
OpenCV 数据类型 | C2 | C3 | C4 | C6 |
---|---|---|---|---|
CV_8U | Vec2b | Vec3b | Vec4b | |
CV_16S | Vec2s | Vec3s | Vec4s | |
CV_32S | Vec2i | Vec3i | Vec4i | |
CV_32F | Vec2f | Vec3f | Vec4f | Vec6f |
CV_64F | Vec2d | Vec3d | Vec4d | Vec6d |
3. 总结
3.1 内存分配
内存分配需谨慎优化,避免频繁分配或释放大的块内存。
3.2 重复计算
避免在循环中重复计算已获得的值,优化循环体。
3.3 迭代器与 at操作
迭代器能减少错误率,但速度较慢。
- 使用 at操作适合单点处理。
- 对于连续数据,建议直接操作指针或逐点访问。
3.4 连续扫描
将图像视为一维数组可提升效率,短循环优于长循环。
3.5 多线程
使用 OpenMP 或 TBB 等多线程库优化运行速度。
3.6 行或列操作
如需单独处理行或列,可使用:
img.row(i).setTo(Scalar(255));img.col(j).setTo(Scalar(255));
发表评论
最新留言
网站不错 人气很旺了 加油
[***.192.178.218]2025年05月05日 15时22分58秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
SaltStack about The Top File 使用知识介绍
2019-03-17
网络协议和支持(一)、uuid模块
2019-03-17
numpy.frombuffer()
2019-03-17
文件结束符EOF
2019-03-17
Latex 错误集合
2019-03-17
Python的内置函数(四十一)、 index()
2019-03-17
Python字符串操作之字符串分割与组合
2019-03-17
tf.tuple
2019-03-17
windows系统配置自动tomcat
2019-03-17
49数据通路的功能和基本结构
2019-03-17
Java面试宝典(2020版)
2019-03-17
Springboot 初學習
2019-03-17
2020年云南省专升本 - 「计算机」专业各院校招生计划
2019-03-17
Android 四大组件、五大存储、六大布局总结
2019-03-17
【VRP问题】基于模拟退火改进遗传算法求解带时间窗含充电站的车辆路径规划问题EVRPTW
2019-03-17
打工族有房有车,原来是这么实现的
2019-03-17
算法 顺序查找/折半查找/冒泡排序/选择排序(待改)
2019-03-17