OpenCV基础
OpenCV (Open Source Computer Vision Library) 是一个开源的计算机视觉和机器学习软件库,包含了500多个优化算法,被广泛应用于图像处理和计算机视觉任务。
OpenCV的主要特点
- 开源且跨平台(Windows, Linux, macOS, Android, iOS)
- 支持多种编程语言(C++, Python, Java等)
- 高效的算法实现,支持多核处理和GPU加速
- 活跃的社区和详尽的文档
安装OpenCV
Python安装
使用pip安装OpenCV非常简单:
# 安装基础版本
pip install opencv-python
# 安装完整版本(包含contrib模块)
pip install opencv-contrib-python
验证安装
import cv2
print(cv2.__version__) # 输出OpenCV版本
图像基础概念
图像的表示
在计算机中,图像通常表示为多维数组:
- 灰度图像: 2D数组,每个像素有一个值(0-255)
- 彩色图像: 3D数组,每个像素有三个通道值(BGR)
- 图像坐标: 以左上角为原点(0,0),向右为x轴正方向,向下为y轴正方向
图像属性
在OpenCV中,可以通过以下方式获取图像属性:
import cv2
import numpy as np
# 读取图像
img = cv2.imread('image.jpg')
# 获取图像属性
height, width, channels = img.shape # 高度、宽度、通道数
size = img.size # 图像像素总数 = height * width * channels
dtype = img.dtype # 图像数据类型(通常为uint8)
OpenCV工作流程
典型的OpenCV图像处理流程如下:
OpenCV模块
OpenCV包含多个模块,每个模块专注于特定的功能:
模块 | 功能描述 |
---|---|
core | 核心功能和基本数据结构 |
imgproc | 图像处理(滤波、变换、形态学操作等) |
imgcodecs | 图像编解码(读取和写入图像) |
videoio | 视频I/O(读取和写入视频) |
highgui | 高级GUI(创建窗口、显示图像等) |
features2d | 特征检测和描述 |
calib3d | 相机校准和3D重建 |
objdetect | 对象检测(如人脸、眼睛等) |
dnn | 深度神经网络模块 |
应用领域
OpenCV在各个领域有广泛的应用:
人脸识别
安全系统、考勤系统
医学影像
肿瘤检测、细胞分析
自动驾驶
车道线检测、障碍物识别
增强现实
3D投影、虚拟试衣
开始使用OpenCV
基本模板
以下是一个使用OpenCV的基本Python代码模板:
import cv2
import numpy as np
# 读取图像
img = cv2.imread('image.jpg')
# 检查图像是否正确读取
if img is None:
print("无法读取图像")
exit()
# 图像处理
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 转换为灰度图像
blur = cv2.GaussianBlur(gray, (5, 5), 0) # 高斯模糊
# 显示图像
cv2.imshow('Original', img)
cv2.imshow('Processed', blur)
# 等待按键并关闭窗口
cv2.waitKey(0)
cv2.destroyAllWindows()
# 保存结果
cv2.imwrite('result.jpg', blur)
注意事项
- OpenCV使用BGR颜色顺序,而不是常见的RGB
- 图像坐标系统中,原点在左上角
- 使用
waitKey()
函数来显示图像,否则窗口会立即关闭 - 处理大型图像时,注意内存使用和性能优化