Python OpenCV入门实践:图像处理基础
学习目标
通过本课程,学员们将了解OpenCV的基本概念、安装方法,掌握如何使用Python和OpenCV进行基本的图像处理操作,包括图像的读取、显示、保存以及简单的图像变换。
相关知识点
- Python OpenCV图像处理基础
学习内容
1 Python OpenCV图像处理基础
1.1 OpenCV简介及其安装
1.1.1 OpenCV简介
OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉和机器学习软件库。OpenCV被广泛应用于各种计算机视觉应用,如图像和视频分析、人脸识别、物体识别、医学图像分析、增强现实等。它支持多种编程语言,包括Python、C++和Java,以及多种操作系统,如Windows、Linux、MacOS、Android和iOS。
OpenCV的开发始于1999年,由Intel公司发起,旨在加速计算机视觉应用的开发。2000年,OpenCV 1.0版本发布。随着时间的发展,OpenCV不断吸收新的算法和技术,成为计算机视觉领域不可或缺的工具之一。OpenCV 2.0版本引入了更多的高级功能,如机器学习模块。2012年,OpenCV 3.0版本发布,增加了更多的图像处理和视频分析功能。最新的OpenCV 4.0版本进一步优化了性能,增加了对深度学习的支持。
1.1.2 OpenCV的安装
安装OpenCV非常简单,特别是使用Python时。可以通过Python的包管理工具pip来安装OpenCV。打开命令行工具,输入以下命令:
python
%pip install opencv-python
如果需要使用OpenCV的额外模块,如SIFT、SURF等,可以安装opencv-contrib-python
包:
python
%pip install opencv-contrib-python
安装完成后,可以在Python脚本中通过import cv2
来导入OpenCV库。
1.2 图像的基本操作
1.2.1 读取图像
执行以下指令获取测试图片。
python
!wget https://model-community-picture.obs.cn-north-4.myhuaweicloud.com/ascend-zone/notebook_datasets/188467642fa811f0b2fdfa163edcddae/example.jpg
在OpenCV中,读取图像非常简单。使用cv2.imread()
函数可以读取图像文件。该函数接受一个文件路径作为参数,并返回一个NumPy数组,该数组表示图像的像素值。
python
import cv2
# 读取图像
image = cv2.imread('example.jpg')
# 检查图像是否成功读取
if image is None:
print("Error: Could not read image.")
else:
print("Image successfully read.")
1.2.2 显示图像
读取图像后,可以使用cv2.imshow()
函数来显示图像。该函数接受两个参数:窗口名称和图像数组。
python
import cv2
# 读取图像
image = cv2.imread('example.jpg')
# 显示图像
cv2.imshow('Image', image)
# 等待用户按键
cv2.waitKey(0)
# 关闭所有窗口
cv2.destroyAllWindows()
1.2.3 保存图像
处理完图像后,可以使用cv2.imwrite()
函数将图像保存到文件。该函数接受两个参数:文件路径和图像数组。
python
import cv2
# 读取图像
image = cv2.imread('example.jpg')
# 保存图像
cv2.imwrite('save.jpg', image)
1.3 图像变换
1.3.1 图像灰度化
图像灰度化是将彩色图像转换为灰度图像的过程。在OpenCV中,可以使用cv2.cvtColor()
函数来实现图像的灰度化。该函数接受两个参数:输入图像和颜色转换代码。
python
import cv2
import matplotlib.pyplot as plt
# 读取图像
image = cv2.imread('example.jpg')
# 转换为灰度图像
gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
python
# 将 BGR 格式转换为 RGB 格式,以适配 matplotlib 的显示
gray_image = cv2.cvtColor(gray_image, cv2.COLOR_BGR2RGB)
# 显示灰度图像
plt.imshow(gray_image)
plt.axis('off')
plt.show()
1.3.2 图像缩放
图像缩放是改变图像大小的过程。在OpenCV中,可以使用cv2.resize()
函数来实现图像的缩放。该函数接受多个参数,包括输入图像、输出图像的大小、插值方法等。
python
import cv2
# 读取图像
image = cv2.imread('example.jpg')
# 缩放图像
resized_image = cv2.resize(image, (800, 600))
python
# 将 BGR 格式转换为 RGB 格式,以适配 matplotlib 的显示
resized_image = cv2.cvtColor(resized_image, cv2.COLOR_BGR2RGB)
# 显示缩放后的图像
plt.imshow(resized_image)
plt.show()
1.3.3 图像旋转
图像旋转是将图像绕某个点旋转一定角度的过程。在OpenCV中,可以使用cv2.getRotationMatrix2D()
和cv2.warpAffine()
函数来实现图像的旋转。
python
import cv2
import numpy as np
# 读取图像
image = cv2.imread('example.jpg')
# 获取图像的中心点
height, width = image.shape[:2]
center = (width // 2, height // 2)
# 定义旋转角度和缩放比例
angle = 45
scale = 1.0
# 获取旋转矩阵
rotation_matrix = cv2.getRotationMatrix2D(center, angle, scale)
# 应用旋转
rotated_image = cv2.warpAffine(image, rotation_matrix, (width, height))
python
# 将 BGR 格式转换为 RGB 格式,以适配 matplotlib 的显示
rotated_image = cv2.cvtColor(rotated_image, cv2.COLOR_BGR2RGB)
# 显示旋转后的图像
plt.imshow(rotated_image)
plt.axis('off')
plt.show()
通过本课程的学习,学员们将掌握OpenCV的基本使用方法,能够进行图像的读取、显示、保存以及简单的图像变换。这些基础知识将为后续更复杂的图像处理和计算机视觉任务打下坚实的基础。