OpenCV 入门指南 —— 从环境搭建到图像处理

文章目录

  • 前言
  • 一、什么是 OpenCV?
  • 二、环境准备与安装
    • 1. Python 虚拟环境
    • 2. 安装 OpenCV
    • 3. 验证安装
  • 三、读取与显示图像
  • 四、常见图像处理操作
    • 1. 色彩空间转换
    • 2. 图像平滑(模糊)
    • 3. 边缘检测(Canny 算法)
    • 4. 在图像上绘制图形与文字
  • 五、视频与摄像头操作
  • 六、推荐学习路线
  • 七、参考资料


前言

在计算机视觉领域,OpenCV(Open Source Computer Vision Library)凭借其开源、高效和功能丰富的特点,几乎成为了业界标准。无论是图像处理、视频分析,还是机器学习与深度学习,OpenCV 都能提供强大的支持。本文将为初学者呈现一份从环境搭建到基础demo的完整入门指南。


一、什么是 OpenCV?

  • 开源计算机视觉库:由 Intel 于 1999 年发起,后由 Willow Garage、Itseez 等机构维护,目前由 OpenCV.org 管理。
  • 多语言支持:提供 C++、Python、Java、Android、iOS 等接口,适用于科研和工业场景。
  • 应用广泛:人脸识别、目标跟踪、图像拼接、增强现实、自动驾驶等。

二、环境准备与安装

1. Python 虚拟环境

  • 推荐使用 Anaconda 或者标准的 venv

  • 创建并激活环境:

    conda create -n opencv_env python=3.8 -y
    conda activate opencv_env
    

2. 安装 OpenCV

  • 安装带 contrib 扩展模块的版本:

    pip install opencv-contrib-python
    

3. 验证安装

import cv2
print("OpenCV 版本:", cv2.__version__)
# 预期输出:4.x.x

三、读取与显示图像

  1. 读取图像(BGR 格式)

    img = cv2.imread('path/to/image.jpg')
    if img is None:
        raise FileNotFoundError("请检查图像路径是否正确!")
    
  2. 显示图像

    cv2.imshow('Demo Image', img)
    cv2.waitKey(0)      # 按任意键退出
    cv2.destroyAllWindows()
    
  • cv2.imread() 读取图像
  • cv2.imshow() 创建窗口并展示
  • cv2.waitKey() 等待键盘输入
  • cv2.destroyAllWindows() 关闭所有窗口

小贴士:Windows 环境下若出现无法显示窗口,可尝试 cv2.waitKey(1) 并确保脚本未被 IDE 拦截。


四、常见图像处理操作

1. 色彩空间转换

gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)  # BGR → 灰度
cv2.imshow('Gray Image', gray)
cv2.waitKey(0)
cv2.destroyAllWindows()

2. 图像平滑(模糊)

# 均值滤波
blur = cv2.blur(img, (5, 5))
# 高斯模糊
gblur = cv2.GaussianBlur(img, (7, 7), sigmaX=1.5)

3. 边缘检测(Canny 算法)

edges = cv2.Canny(gray, threshold1=50, threshold2=150)
cv2.imshow('Edges', edges)
cv2.waitKey(0)
cv2.destroyAllWindows()

4. 在图像上绘制图形与文字

# 在原图上画一个蓝色矩形
cv2.rectangle(img, (50, 50), (200, 200), (255, 0, 0), thickness=2)

# 在图像上写文字
cv2.putText(img, 'OpenCV', (50, 300),
            fontFace=cv2.FONT_HERSHEY_SIMPLEX,
            fontScale=1.0, color=(0, 255, 0), thickness=2)
cv2.imshow('Draw', img)
cv2.waitKey(0)
cv2.destroyAllWindows()

五、视频与摄像头操作

cap = cv2.VideoCapture(0)  # 参数 0 表示默认摄像头
if not cap.isOpened():
    raise RuntimeError("无法打开摄像头!")

while True:
    ret, frame = cap.read()
    if not ret:
        break

    gray_frame = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
    cv2.imshow('Live Gray', gray_frame)

	 # 按 'q' 键退出
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

cap.release()
cv2.destroyAllWindows()

提示cv2.VideoCapture 支持视频文件路径,也可用于读取本地视频。
进阶:结合多线程可提高视频流处理效率。


六、推荐学习路线

  1. 基础篇:图像 I/O、像素访问、几何变换(缩放、旋转、裁剪)、色彩空间变换。
  2. 进阶篇:图像阈值分割、形态学操作、轮廓检测、霍夫直线/圆变换。
  3. 机器学习:使用 OpenCV 的 ml 模块进行分类与回归;
  4. 深度学习:利用 DNN 模块加载 TensorFlow/Caffe/PyTorch 模型,实现人脸检测、目标识别等。;
  5. 项目实战:视觉检测、视频分析、增强现实等,将所学知识与实际需求结合。

七、参考资料

  • OpenCV 官方文档
  • PyImageSearch 教程

欢迎关注我的 CSDN 账号,留言交流,共同进步!
如果本文对你有帮助,别忘了点赞、收藏并分享给更多小伙伴~

你可能感兴趣的:(opencv,图像处理,人工智能,python)