OpenCV 入门指南 —— 从环境搭建到图像处理
在计算机视觉领域,OpenCV(Open Source Computer Vision Library)凭借其开源、高效和功能丰富的特点,几乎成为了业界标准。无论是图像处理、视频分析,还是机器学习与深度学习,OpenCV 都能提供强大的支持。本文将为初学者呈现一份从环境搭建到基础demo的完整入门指南。开源计算机视觉库:由 Intel 于 1999 年发起,后由 Willow Garage、Its
文章目录
前言
在计算机视觉领域,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
三、读取与显示图像
-
读取图像(BGR 格式)
img = cv2.imread('path/to/image.jpg') if img is None: raise FileNotFoundError("请检查图像路径是否正确!") -
显示图像
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支持视频文件路径,也可用于读取本地视频。
进阶:结合多线程可提高视频流处理效率。
六、推荐学习路线
- 基础篇:图像 I/O、像素访问、几何变换(缩放、旋转、裁剪)、色彩空间变换。
- 进阶篇:图像阈值分割、形态学操作、轮廓检测、霍夫直线/圆变换。
- 机器学习:使用 OpenCV 的
ml模块进行分类与回归; - 深度学习:利用 DNN 模块加载 TensorFlow/Caffe/PyTorch 模型,实现人脸检测、目标识别等。;
- 项目实战:视觉检测、视频分析、增强现实等,将所学知识与实际需求结合。
七、参考资料
欢迎关注我的 CSDN 账号,留言交流,共同进步!
如果本文对你有帮助,别忘了点赞、收藏并分享给更多小伙伴~
火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。
更多推荐
所有评论(0)