《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月前
|
算法 计算机视觉
基于qt的opencv实时图像处理框架FastCvLearn实战
本文介绍了一个基于Qt的OpenCV实时图像处理框架FastCvLearn,通过手撕代码的方式详细讲解了如何实现实时人脸马赛克等功能,并提供了结果展示和基础知识回顾。
154 7
|
3月前
|
机器学习/深度学习 算法 计算机视觉
【Python篇】Python + OpenCV 全面实战:解锁图像处理与视觉智能的核心技能
【Python篇】Python + OpenCV 全面实战:解锁图像处理与视觉智能的核心技能
121 2
WK
|
5月前
|
计算机视觉 Python
如何使用OpenCV进行基本图像处理
使用OpenCV进行基本图像处理包括安装OpenCV,读取与显示图像,转换图像颜色空间(如从BGR到RGB),调整图像大小,裁剪特定区域,旋转图像,以及应用图像滤镜如高斯模糊等效果。这些基础操作是进行更复杂图像处理任务的前提。OpenCV还支持特征检测、图像分割及对象识别等高级功能。
WK
57 4
|
6月前
|
机器学习/深度学习 XML 计算机视觉
OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉和机器学习库,它提供了大量的函数和工具,用于处理图像和视频数据。
OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉和机器学习库,它提供了大量的函数和工具,用于处理图像和视频数据。
|
8月前
|
算法 计算机视觉 Docker
Docker容器中的OpenCV:轻松构建可移植的计算机视觉环境
Docker容器中的OpenCV:轻松构建可移植的计算机视觉环境
128 3
Docker容器中的OpenCV:轻松构建可移植的计算机视觉环境
|
8月前
|
人工智能 计算机视觉 Python
【OpenCV】计算机视觉图像处理基础知识(上)
【OpenCV】计算机视觉图像处理基础知识(上)
100 7
|
8月前
|
算法 计算机视觉
【OpenCV】计算机视觉图像处理基础知识(下)
【OpenCV】计算机视觉图像处理基础知识(下)
|
8月前
|
机器学习/深度学习 算法 Linux
使用OpenCV在Python中进行图像处理
使用OpenCV在Python中进行图像处理
|
8月前
|
机器学习/深度学习 API vr&ar
Qt, OpenCV与OpenGL协同作战:图像处理与三维图形界面的完美结合
Qt, OpenCV与OpenGL协同作战:图像处理与三维图形界面的完美结合
1093 4
|
8月前
|
算法 安全 机器人
最新版opencv4.9安装介绍,基本图像处理详解
最新版opencv4.9安装介绍,基本图像处理详解
357 0