OpenCV(Python)基础—9小时入门版
一、课程目标与学习路径(1小时)
核心目标:通过9小时学习,掌握OpenCV在Python环境下的基础操作,包括图像/视频的读取、处理、分析及可视化。
学习路径:
- 环境搭建(0.5小时):安装Python、OpenCV库(
pip install opencv-python)及依赖工具(如NumPy、Matplotlib)。 - 基础概念(0.5小时):理解图像表示(BGR/RGB通道)、像素操作、坐标系等。
二、环境搭建与工具准备(1小时)
1. Python环境配置
- 推荐使用Anaconda管理虚拟环境,避免依赖冲突。
- 安装OpenCV主库:
pip install opencv-python,若需扩展功能(如SIFT算法),安装opencv-contrib-python。
2. 开发工具选择
- Jupyter Notebook:适合交互式学习,可逐行执行代码并实时查看图像结果。
- PyCharm/VSCode:适合项目开发,支持代码补全与调试。
3. 验证安装
import cv2print(cv2.__version__) # 输出版本号(如4.5.5)
三、图像处理基础(2小时)
1. 图像读取与显示
import cv2# 读取图像(支持JPG/PNG等格式)img = cv2.imread('image.jpg')# 显示图像(窗口标题为"Image",按任意键关闭)cv2.imshow('Image', img)cv2.waitKey(0)cv2.destroyAllWindows()
关键点:
imread默认读取BGR格式,需注意与RGB的转换。waitKey(0)表示无限等待,若设为waitKey(1000)则1秒后自动关闭。
2. 像素操作与ROI提取
# 访问像素值(坐标(100,50)处的BGR值)pixel = img[50, 100]print(pixel) # 输出[B, G, R]# 修改像素值img[50, 100] = [0, 0, 255] # 改为红色# 提取ROI区域(左上角(100,100),宽高200x200)roi = img[100:300, 100:300]
3. 图像几何变换
# 缩放(宽度500,高度按比例调整)resized = cv2.resize(img, (500, 0), interpolation=cv2.INTER_AREA)# 旋转(中心点(250,250),角度45度,缩放1.0)(h, w) = img.shape[:2]center = (w//2, h//2)M = cv2.getRotationMatrix2D(center, 45, 1.0)rotated = cv2.warpAffine(img, M, (w, h))
四、图像处理进阶(3小时)
1. 颜色空间转换
# BGR转灰度图gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)# BGR转HSV(常用于颜色分割)hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
2. 图像滤波与边缘检测
# 高斯模糊(核大小5x5,标准差0)blurred = cv2.GaussianBlur(img, (5, 5), 0)# Canny边缘检测(阈值100,200)edges = cv2.Canny(gray, 100, 200)
3. 形态学操作
# 腐蚀与膨胀(核大小3x3)kernel = np.ones((3,3), np.uint8)eroded = cv2.erode(edges, kernel, iterations=1)dilated = cv2.dilate(eroded, kernel, iterations=1)
五、视频处理与实战(2小时)
1. 视频读取与帧处理
cap = cv2.VideoCapture('video.mp4')while cap.isOpened():ret, frame = cap.read() # ret为布尔值,frame为当前帧if not ret:breakgray_frame = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)cv2.imshow('Frame', gray_frame)if cv2.waitKey(25) & 0xFF == ord('q'): # 按q键退出breakcap.release()cv2.destroyAllWindows()
2. 人脸检测实战
# 加载预训练的人脸检测模型(Haar级联分类器)face_cascade = cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_frontalface_default.xml')# 检测人脸(缩放因子1.1,最小邻居数5)faces = face_cascade.detectMultiScale(gray, scaleFactor=1.1, minNeighbors=5)# 绘制矩形框for (x, y, w, h) in faces:cv2.rectangle(img, (x, y), (x+w, y+h), (255, 0, 0), 2)
六、学习建议与资源推荐
-
分阶段练习:
- 第1-3小时:掌握基础操作,完成图像读写与简单变换。
- 第4-6小时:深入滤波、边缘检测等算法,理解数学原理。
- 第7-9小时:结合视频处理与实战项目(如人脸识别、物体跟踪)。
-
推荐资源:
- 官方文档:OpenCV-Python Tutorials
- 实战项目:GitHub上的OpenCV入门项目
-
常见问题:
- 库冲突:若同时安装
opencv-python和opencv-contrib-python,需卸载其中一个。 - 性能优化:对大图像处理时,优先使用
cv2.INTER_AREA缩放算法。
- 库冲突:若同时安装
七、总结与展望
通过9小时学习,你已掌握OpenCV(Python)的核心功能,包括图像/视频处理、滤波算法及简单的人脸检测。下一步可探索:
- 深度学习结合(如YOLO目标检测)
- 实时视频流处理(如摄像头监控)
- 跨平台部署(如Android/iOS开发)
OpenCV作为计算机视觉领域的基石,其Python接口极大降低了入门门槛。持续实践与项目驱动是提升技能的关键!