OpenCV(Python)基础—9小时入门全攻略

OpenCV(Python)基础—9小时入门版

一、课程目标与学习路径(1小时)

核心目标:通过9小时学习,掌握OpenCV在Python环境下的基础操作,包括图像/视频的读取、处理、分析及可视化。
学习路径

  1. 环境搭建(0.5小时):安装Python、OpenCV库(pip install opencv-python)及依赖工具(如NumPy、Matplotlib)。
  2. 基础概念(0.5小时):理解图像表示(BGR/RGB通道)、像素操作、坐标系等。

二、环境搭建与工具准备(1小时)

1. Python环境配置

  • 推荐使用Anaconda管理虚拟环境,避免依赖冲突。
  • 安装OpenCV主库:pip install opencv-python,若需扩展功能(如SIFT算法),安装opencv-contrib-python

2. 开发工具选择

  • Jupyter Notebook:适合交互式学习,可逐行执行代码并实时查看图像结果。
  • PyCharm/VSCode:适合项目开发,支持代码补全与调试。

3. 验证安装

  1. import cv2
  2. print(cv2.__version__) # 输出版本号(如4.5.5)

三、图像处理基础(2小时)

1. 图像读取与显示

  1. import cv2
  2. # 读取图像(支持JPG/PNG等格式)
  3. img = cv2.imread('image.jpg')
  4. # 显示图像(窗口标题为"Image",按任意键关闭)
  5. cv2.imshow('Image', img)
  6. cv2.waitKey(0)
  7. cv2.destroyAllWindows()

关键点

  • imread默认读取BGR格式,需注意与RGB的转换。
  • waitKey(0)表示无限等待,若设为waitKey(1000)则1秒后自动关闭。

2. 像素操作与ROI提取

  1. # 访问像素值(坐标(100,50)处的BGR值)
  2. pixel = img[50, 100]
  3. print(pixel) # 输出[B, G, R]
  4. # 修改像素值
  5. img[50, 100] = [0, 0, 255] # 改为红色
  6. # 提取ROI区域(左上角(100,100),宽高200x200)
  7. roi = img[100:300, 100:300]

3. 图像几何变换

  1. # 缩放(宽度500,高度按比例调整)
  2. resized = cv2.resize(img, (500, 0), interpolation=cv2.INTER_AREA)
  3. # 旋转(中心点(250,250),角度45度,缩放1.0)
  4. (h, w) = img.shape[:2]
  5. center = (w//2, h//2)
  6. M = cv2.getRotationMatrix2D(center, 45, 1.0)
  7. rotated = cv2.warpAffine(img, M, (w, h))

四、图像处理进阶(3小时)

1. 颜色空间转换

  1. # BGR转灰度图
  2. gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
  3. # BGR转HSV(常用于颜色分割)
  4. hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)

2. 图像滤波与边缘检测

  1. # 高斯模糊(核大小5x5,标准差0)
  2. blurred = cv2.GaussianBlur(img, (5, 5), 0)
  3. # Canny边缘检测(阈值100,200)
  4. edges = cv2.Canny(gray, 100, 200)

3. 形态学操作

  1. # 腐蚀与膨胀(核大小3x3)
  2. kernel = np.ones((3,3), np.uint8)
  3. eroded = cv2.erode(edges, kernel, iterations=1)
  4. dilated = cv2.dilate(eroded, kernel, iterations=1)

五、视频处理与实战(2小时)

1. 视频读取与帧处理

  1. cap = cv2.VideoCapture('video.mp4')
  2. while cap.isOpened():
  3. ret, frame = cap.read() # ret为布尔值,frame为当前帧
  4. if not ret:
  5. break
  6. gray_frame = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
  7. cv2.imshow('Frame', gray_frame)
  8. if cv2.waitKey(25) & 0xFF == ord('q'): # 按q键退出
  9. break
  10. cap.release()
  11. cv2.destroyAllWindows()

2. 人脸检测实战

  1. # 加载预训练的人脸检测模型(Haar级联分类器)
  2. face_cascade = cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_frontalface_default.xml')
  3. # 检测人脸(缩放因子1.1,最小邻居数5)
  4. faces = face_cascade.detectMultiScale(gray, scaleFactor=1.1, minNeighbors=5)
  5. # 绘制矩形框
  6. for (x, y, w, h) in faces:
  7. cv2.rectangle(img, (x, y), (x+w, y+h), (255, 0, 0), 2)

六、学习建议与资源推荐

  1. 分阶段练习

    • 第1-3小时:掌握基础操作,完成图像读写与简单变换。
    • 第4-6小时:深入滤波、边缘检测等算法,理解数学原理。
    • 第7-9小时:结合视频处理与实战项目(如人脸识别、物体跟踪)。
  2. 推荐资源

    • 官方文档:OpenCV-Python Tutorials
    • 实战项目:GitHub上的OpenCV入门项目
  3. 常见问题

    • 库冲突:若同时安装opencv-pythonopencv-contrib-python,需卸载其中一个。
    • 性能优化:对大图像处理时,优先使用cv2.INTER_AREA缩放算法。

七、总结与展望

通过9小时学习,你已掌握OpenCV(Python)的核心功能,包括图像/视频处理、滤波算法及简单的人脸检测。下一步可探索:

  • 深度学习结合(如YOLO目标检测)
  • 实时视频流处理(如摄像头监控)
  • 跨平台部署(如Android/iOS开发)

OpenCV作为计算机视觉领域的基石,其Python接口极大降低了入门门槛。持续实践与项目驱动是提升技能的关键!