文章目录
- OpenCV 图像基础认知与运用
- 1. OpenCV 简介与安装
- OpenCV 的优势
- 安装 OpenCV
- 2. 图像的基本概念
- 2.1. 图像的存储格式
- 2.2. 图像的表示
- 3. 图像的基本操作
- 3.1. 创建图像窗口
- 3.2. 读取与显示图像
- 3.3. 保存图像
- 3.4. 图像切片与区域提取
- 3.5. 图像大小调整
- 4. 图像绘制与注释
- 4.1. 绘制直线、圆形和矩形
- 4.2. 绘制文本
- 5. 视频处理基础
- 6. 总结
OpenCV 图像基础认知与运用
在现代计算机视觉领域,OpenCV 是最常用的开源计算机视觉库之一。它为开发者提供了强大的图像处理、计算机视觉和机器学习工具。本文将详细介绍 OpenCV 中图像的基础认知和常见运用方法,包括图像的表示、读取、显示、处理等内容,并拓展相关的知识。
1. OpenCV 简介与安装
OpenCV 是一个开源的计算机视觉库,提供了众多的图像处理和计算机视觉工具。它不仅支持多种编程语言,如 C++、Python 和 Java,还能在多个平台上使用,包括 Windows、Linux 和 macOS。
OpenCV 的优势
- 开源免费:OpenCV 是一个开源的计算机视觉库,任何人都可以自由使用、修改和分发。
- 多语言支持:OpenCV 支持多种编程语言,如 Python、C++、Java 等,提供了跨平台支持。
- 丰富的 API:OpenCV 提供了大量函数接口,涵盖了图像处理、机器学习、特征检测、对象识别等多个领域。
安装 OpenCV
你可以通过以下几种方式安装 OpenCV:
-
通过 conda 安装:
conda install -c conda-forge opencv
-
通过 pip 安装:
pip install opencv-python
-
通过 pip镜像源 安装(这里提供的是清华的PyPI 镜像源):
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple opencv-python
2. 图像的基本概念
2.1. 图像的存储格式
图像是由 像素 组成的,每个像素存储了图像的颜色、亮度等信息。通常情况下,图像以矩阵的形式存储在计算机中。图像可以是 灰度图像 或 彩色图像,而 OpenCV 中常用的是 8 位图像。
- 灰度图像:二维矩阵,每个元素代表一个灰度值,通常范围是 0-255。
- 彩色图像:三维矩阵,每个像素由三个颜色通道(R、G、B)构成,每个通道的像素值范围是 0-255。
2.2. 图像的表示
OpenCV 中,图像数据以 numpy 数组的形式表示。对于彩色图像,图像数据是一个三维数组 (height, width, channels)
,其中:
- height:图像的高度(行数)
- width:图像的宽度(列数)
- channels:图像的颜色通道数,彩色图像有 3 个通道(RGB),灰度图像只有 1 个通道。
3. 图像的基本操作
3.1. 创建图像窗口
在 OpenCV 中,图像窗口用于显示图像。你可以使用 cv2.namedWindow()
函数来创建一个窗口:
cv2.namedWindow("Window Name", cv2.WINDOW_NORMAL)
cv2.WINDOW_NORMAL
允许你调整窗口的大小。
3.2. 读取与显示图像
你可以通过 cv2.imread()
读取图像,并使用 cv2.imshow()
显示图像:
import cv2# 读取图像
img = cv2.imread('image.jpg')# 显示图像
cv2.imshow('Image Window', img)# 等待按键输入,按任意键关闭图像窗口
cv2.waitKey(0)
cv2.destroyAllWindows()
cv2.waitKey(0)
:等待用户按键。cv2.destroyAllWindows()
:关闭所有显示的窗口。
3.3. 保存图像
保存图像到本地文件:
cv2.imwrite('output_image.jpg', img)
3.4. 图像切片与区域提取
图像切片用于从图像中提取指定的区域。你可以使用切片操作来提取矩形区域:
roi = img[100:200, 150:250] # 从 (100, 150) 到 (200, 250) 的矩形区域
cv2.imshow('ROI', roi)
确保切片操作的边界在图像尺寸范围内。
3.5. 图像大小调整
使用 cv2.resize()
函数可以调整图像的尺寸:
resized_img = cv2.resize(img, (width, height))
width
和height
是目标图像的宽度和高度。
4. 图像绘制与注释
4.1. 绘制直线、圆形和矩形
OpenCV 提供了函数来绘制基本图形,如直线、圆形和矩形。
-
绘制直线:
cv2.line(img, (start_x, start_y), (end_x, end_y), (255, 0, 0), 2)
-
绘制圆形:
cv2.circle(img, (center_x, center_y), radius, (0, 255, 0), 2)
-
绘制矩形:
cv2.rectangle(img, (top_left_x, top_left_y), (bottom_right_x, bottom_right_y), (0, 0, 255), 2)
4.2. 绘制文本
OpenCV 允许你在图像上绘制文本:
cv2.putText(img, 'Hello, OpenCV!', (50, 50), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 255, 0), 2, cv2.LINE_AA)
(50, 50)
:文本起始位置。cv2.FONT_HERSHEY_SIMPLEX
:字体类型。1
:字体大小。(0, 255, 0)
:文本颜色(绿色)。2
:文本粗细。
5. 视频处理基础
OpenCV 还支持视频读取与处理。你可以使用 cv2.VideoCapture()
读取视频文件或摄像头数据,并使用 cap.read()
获取每一帧图像:
cap = cv2.VideoCapture(0) # 读取摄像头视频while True:ret, frame = cap.read() # 读取每一帧if not ret:breakcv2.imshow('Video', frame)if cv2.waitKey(1) & 0xFF == ord('q'): # 按 'q' 键退出breakcap.release()
cv2.destroyAllWindows()
cap.read()
:返回当前帧的图像。cv2.waitKey(1)
:每 1 毫秒检查一次键盘输入。
6. 总结
本文介绍了 OpenCV 的图像基础知识,并展示了如何使用 OpenCV 进行图像处理和绘制操作。你学习了以下内容:
- 图像的基本概念:如何表示图像、如何使用 OpenCV 进行图像处理。
- 图像操作:图像的读取、显示、保存、大小调整、切片等基本操作。
- 绘图与注释:如何在图像上绘制直线、圆形、矩形以及文本。
- 视频处理:如何读取和显示视频。
掌握 OpenCV 的这些基础知识,能够帮助你进行图像处理、计算机视觉等任务的实现,并为后续深入学习更复杂的技术打下坚实基础。