Python 中 OpenCV (cv2) 安装与使用详细指南
OpenCV (Open Source Computer Vision Library) 是计算机视觉领域最流行的库之一。Python 通过 cv2
模块提供 OpenCV 的接口。
一、安装 OpenCV
方法 1:基础安装(推荐)
# 安装核心包(包含主要功能)
pip install opencv-python# 安装完整包(包含额外模块如 SIFT/SURF)
pip install opencv-contrib-python
方法 2:通过 Conda
conda install -c conda-forge opencv
验证安装
import cv2
print(cv2.__version__) # 输出版本号,如 4.9.0
二、基本功能使用
1. 读取/显示/保存图像
import cv2# 读取图像 (参数:0=灰度,1=彩色)
img = cv2.imread('image.jpg', cv2.IMREAD_COLOR)# 显示图像
cv2.imshow('Image Window', img)
cv2.waitKey(0) # 等待按键(0=无限等待)
cv2.destroyAllWindows()# 保存图像
cv2.imwrite('output.jpg', img)
2. 视频处理
# 打开摄像头
cap = cv2.VideoCapture(0) # 0=默认摄像头while True:ret, frame = cap.read() # 读取帧if not ret: break# 转换为灰度gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)cv2.imshow('Live Video', gray)# 按 'q' 退出if cv2.waitKey(1) & 0xFF == ord('q'):breakcap.release()
cv2.destroyAllWindows()
3. 图像处理操作
# 缩放
resized = cv2.resize(img, (400, 300))# 旋转
(h, w) = img.shape[:2]
M = cv2.getRotationMatrix2D((w//2, h//2), 45, 1.0) # 旋转45度
rotated = cv2.warpAffine(img, M, (w, h))# 边缘检测
edges = cv2.Canny(img, 100, 200) # 阈值1, 阈值2# 绘制图形
cv2.rectangle(img, (50, 50), (200, 200), (0,255,0), 2) # 绿色矩形
cv2.putText(img, 'Hello', (100,100), cv2.FONT_HERSHEY_SIMPLEX, 1, (255,0,0), 2)
三、高级功能示例
1. 人脸检测
# 加载预训练模型
face_cascade = cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_frontalface_default.xml')gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
faces = face_cascade.detectMultiScale(gray, 1.1, 4)# 标记检测到的人脸
for (x,y,w,h) in faces:cv2.rectangle(img, (x,y), (x+w,y+h), (255,0,0), 2)
2. 特征点检测 (SIFT)
sift = cv2.SIFT_create()
keypoints, descriptors = sift.detectAndCompute(gray, None)# 绘制特征点
img_sift = cv2.drawKeypoints(img, keypoints, None)
3. 目标跟踪 (KCF 算法)
tracker = cv2.TrackerKCF_create()
bbox = cv2.selectROI('Tracking', img, False) # 手动选择区域
tracker.init(img, bbox)while True:ret, frame = cap.read()success, bbox = tracker.update(frame)if success:x,y,w,h = [int(i) for i in bbox]cv2.rectangle(frame, (x,y), (x+w,y+h), (0,255,0), 2)
四、常见问题解决
-
导入错误
ImportError: libGL.so.1
在 Linux 上安装依赖:sudo apt install libgl1-mesa-glx
-
视频无法打开
检查摄像头权限或视频路径,尝试:cap = cv2.VideoCapture(0, cv2.CAP_DSHOW) # Windows 专用
-
Matplotlib 显示颜色异常
OpenCV 使用 BGR 格式,需转换:img_rgb = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) plt.imshow(img_rgb)
五、学习资源
- 官方文档
- OpenCV-Python 教程
- 推荐书籍:《Learning OpenCV 4 Computer Vision with Python 3》