《OpenCV图像处理》——第2章 构建图像处理工具 2.1 基本数据类型

简介:

本节书摘来自华章计算机《OpenCV图像处理》一书中的第2章,第2.1节,作者:[西]葛罗瑞亚·布埃诺·加西亚(Gloria Bueno García)著,更多章节内容可以访问云栖社区“华章计算机”公众号查看

第2章 构建图像处理工具

2.1 基本数据类型

OpenCV中的基本数据类型是Mat,用来存储图像。总体上讲,一幅图像被保存为一个头加上一个包含像素数据的内存区。图像有若干个通道。灰度图像有一个通道,而彩色图像通常有红、绿和蓝三个构成成分(但是OpenCV以其逆序,即蓝、绿和红来存储这三个分量),还可以使用第四个透明度(alpha)通道。可以用img.channels()获取一幅img图像的通道数。
使用若干个位来存储一幅图像的每个像素,这被称为图像深度(image depth)。对于灰度图像,像素通常存储为8位,因此允许256个灰度级(从整数值0到255)。对于彩色图像,每个像素存储为3个字节,每个颜色通道占用一个字节。某些操作必须以浮点格式存储像素。可以使用img.depth()获取图像深度,其返回值是:
CV_8U,8位无符号整数(0~255)
CV_8S,8位有符号整数(-128~127)
CV_16U,16位无符号整数(0~65?535)
CV_16S,16位有符号整数(-32?768~32?767)
CV_32S,32位有符号整数(-2?147?483?648~2?147?483?647)
CV_32F,32位浮点数
CV_64F,64位浮点数
注意,对于灰度图像和彩色图像,最常见的图像深度是CV_8U。使用方法convertTo可以将一种图像深度转换为另一种图像深度:
screenshot

在浮点图像上进行操作(即像素值是数学运算的结果)是很常见的。如果使用imshow()显示这幅图像,将不会看到任何有意义的内容。在这种情况下,必须将像素转换到0~255整数范围。函数convertTo实现一种线性变换并有两个额外的参数alpha和beta,分别表示增加一个尺度因子和一个增量值。这意味着每个像素p被转
换为:
newp = alpha*p + beta
它可以用来正确地显示浮点图像。假设img图像有最小值m和最大值M(参考下面的代码,看看如何获取这些值),则我们可以使用:

screenshot

这些代码将结果图像值的范围映射到0~255范围。图2-1显示了运行该代码的
结果。

screenshot

使用行属性和列属性可以获取图像的大小。还有一个size属性可获得二者:
screenshot

除了图像本身,其他数据类型都很常见,请参考表2-1:
screenshot

其中某些类型有附加操作。例如,可以检查一个点是否位于一个矩形内:
screenshot

这里的参数p和参数r分别是点(二维)和矩形。注意,在任何情况下,表2-1并不是非常完备的;OpenCV的相关方法提供了更多的支撑结构。

相关文章
|
4月前
|
存储 机器学习/深度学习 算法
使用 OpenCV4 和 C++ 构建计算机视觉项目:1~5
使用 OpenCV4 和 C++ 构建计算机视觉项目:1~5
77 0
|
4月前
|
openCL 开发工具 C语言
OpenCV 图像处理学习手册:6~7
OpenCV 图像处理学习手册:6~7
83 0
|
4月前
|
存储 编解码 算法
OpenCV 图像处理学习手册:1~5
OpenCV 图像处理学习手册:1~5
33 0
|
3月前
|
人工智能 Linux API
OpenCV这么简单为啥不学——1.1、图像处理(灰度图、模糊图片、GaussianBlur函数、提取边缘、边缘膨胀、边缘细化)
OpenCV这么简单为啥不学——1.1、图像处理(灰度图、模糊图片、GaussianBlur函数、提取边缘、边缘膨胀、边缘细化)
47 0
|
7天前
|
算法 安全 机器人
最新版opencv4.9安装介绍,基本图像处理详解
最新版opencv4.9安装介绍,基本图像处理详解
|
19天前
|
机器学习/深度学习 存储 算法
OpenCV与NumPy:图像处理中的黄金组合
【4月更文挑战第17天】OpenCV和NumPy是Python图像处理的两大利器,互补协作形成黄金组合。OpenCV专注计算机视觉,提供丰富算法,而NumPy擅长数值计算和数组操作。两者无缝对接,共同实现高效、灵活的图像处理任务。通过灰度化、二值化、边缘检测等案例,展示了它们的协同作用。未来,这一组合将在计算机视觉和机器学习领域发挥更大作用,解锁更多图像处理潜力。
|
20天前
|
机器学习/深度学习 算法 Linux
使用OpenCV在Python中进行图像处理
使用OpenCV在Python中进行图像处理
|
2月前
|
机器学习/深度学习 API vr&ar
Qt, OpenCV与OpenGL协同作战:图像处理与三维图形界面的完美结合
Qt, OpenCV与OpenGL协同作战:图像处理与三维图形界面的完美结合
128 4
|
3月前
|
编解码 算法 自动驾驶
探索OpenCV:图像处理的利器
探索OpenCV:图像处理的利器
31 0
|
3月前
|
算法 计算机视觉 Docker
Docker容器中的OpenCV:轻松构建可移植的计算机视觉环境
Docker容器中的OpenCV:轻松构建可移植的计算机视觉环境