Skip to main content

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版本

图像基础概念

图像的表示

在计算机中,图像通常表示为多维数组:

(i,j)(0,0)(0,1)(1,0)(1,1)图像坐标系统y轴(行)x轴(列)
  • 灰度图像: 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模块

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()函数来显示图像,否则窗口会立即关闭
  • 处理大型图像时,注意内存使用和性能优化