图像基础:从像素到OpenCV
学习目标
通过本课程,学员们将深入了解图像的基本概念,包括像素、颜色空间(如RGB、HSV)以及常见的图像格式。同时,学员们将掌握如何使用OpenCV库读取、显示和保存图像,为后续深入学习图像处理打下坚实的基础。
相关知识点
- Python OpenCV图像基础
学习内容
1 Python OpenCV图像基础
1.1 图像的基本概念
在数字图像处理中,图像可以被看作是一个二维函数f(x, y),其中x和y是空间坐标,而f(x, y)的值则对应于该点的亮度或颜色。在计算机中,图像通常以矩阵的形式存储,矩阵中的每个元素代表图像中的一个像素。像素是构成图像的最小单位,每个像素都有一个特定的位置和颜色值。
1.1.1 像素
像素(Pixel)是图像的基本单位,每个像素都有一个特定的位置和颜色值。在数字图像中,像素的颜色通常由红(R)、绿(G)、蓝(B)三种颜色的组合来表示,这就是常说的RGB颜色模型。每个颜色通道的值范围通常是从0到255,其中0表示该颜色完全缺失,255表示该颜色最亮。
1.1.2 图像格式
图像格式是指图像文件的存储方式,不同的图像格式有不同的特点和用途。常见的图像格式包括:
- JPEG:一种有损压缩格式,适用于照片等需要大量存储空间的图像。
- PNG:一种无损压缩格式,支持透明度,适用于需要保持图像质量的场景。
- BMP:一种未压缩的图像格式,文件较大,但兼容性好。
- GIF:支持动画,常用于网页和简单的动画制作。
1.1.3 图像的分辨率
图像的分辨率是指图像的宽度和高度,通常以像素为单位表示。例如,一个分辨率为1920x1080的图像表示该图像的宽度为1920像素,高度为1080像素。分辨率越高,图像的细节越丰富,但文件大小也会相应增加。
1.2 颜色空间
颜色空间是一种数学模型,用于描述颜色的表示方式。不同的颜色空间适用于不同的应用场景。在图像处理中,最常用的颜色空间包括RGB、HSV和灰度空间。
1.2.1 RGB颜色空间
RGB颜色空间是最常用的颜色模型之一,它通过红、绿、蓝三种颜色的组合来表示图像中的每个像素。每个颜色通道的值范围从0到255,其中0表示该颜色完全缺失,255表示该颜色最亮。RGB颜色空间适用于大多数显示设备,如计算机显示器和电视。
1.2.2 HSV颜色空间
HSV颜色空间是一种基于人类视觉系统的颜色模型,它将颜色分为色调(Hue)、饱和度(Saturation)和亮度(Value)三个分量。色调表示颜色的类型,饱和度表示颜色的纯度,亮度表示颜色的明暗程度。HSV颜色空间在图像处理中常用于颜色分割和颜色识别。
1.2.3 灰度空间
灰度空间是一种单通道的颜色模型,每个像素只有一个亮度值,范围从0到255。0表示黑色,255表示白色,中间的值表示不同的灰度。灰度图像在图像处理中常用于简化计算和提高处理速度。
1.3 使用OpenCV处理图像
OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉库,提供了丰富的图像处理和计算机视觉功能。在本课程中,将学习如何使用OpenCV读取、显示和保存图像。
1.3.1 安装OpenCV
在开始之前,确保已经安装了OpenCV库。可以使用以下命令通过pip安装:
%pip install opencv-python
1.3.2 读取图像
执行以下指令获取测试图片。
!wget https://model-community-picture.obs.cn-north-4.myhuaweicloud.com/ascend-zone/notebook_datasets/85ff9c822fa811f0a0bdfa163edcddae/example.jpg
使用OpenCV读取图像非常简单。cv2.imread()函数可以读取图像文件并返回一个NumPy数组,该数组表示图像的像素值。
import cv2
# 读取图像
image = cv2.imread('example.jpg')
# 检查图像是否成功读取
if image is None:
print("图像读取失败,请检查文件路径是否正确。")
else:
print("图像读取成功!")
1.3.3 显示图像
使用cv2.imshow()函数可以显示图像。需要注意的是,cv2.imshow()函数会创建一个窗口来显示图像,因此需要使用cv2.waitKey()函数来等待用户按键,否则窗口会立即关闭。
import cv2
# 读取图像
image = cv2.imread('example.jpg')
# 显示图像
cv2.imshow('Image', image)
# 等待用户按键
cv2.waitKey(0)
# 关闭所有窗口
cv2.destroyAllWindows()

注意:退出命令行,需要鼠标点中图像,然后输入任意值,即可退出。再在命令行里输入cv2.destroyAllWindows()即可完全退出。(这个设计有点奇怪,哈哈)

1.3.4 保存图像
使用cv2.imwrite()函数可以将图像保存到文件中。该函数需要两个参数:保存的文件路径和要保存的图像。
import cv2
# 读取图像
image = cv2.imread('example.jpg')
# 保存图像
cv2.imwrite('save.jpg', image)
print("图像保存成功!")
1.3.5 图像的基本操作
除了读取、显示和保存图像,OpenCV还提供了许多其他图像处理功能。例如,可以使用cv2.cvtColor()函数将图像从一种颜色空间转换为另一种颜色空间。
import cv2
import matplotlib.pyplot as plt
# 读取图像
image = cv2.imread('example.jpg')
# 将图像从BGR颜色空间转换为灰度空间
gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
# 将 BGR 格式转换为 RGB 格式,以适配 matplotlib 的显示
gray_image = cv2.cvtColor(gray_image, cv2.COLOR_BGR2RGB)
# 显示灰度图像
plt.imshow(gray_image)
plt.axis('off')
plt.show()

注意:此处直接关闭图片,即可会退到命令行,可以继续执行指令。

被折叠的 条评论
为什么被折叠?



