hhzz头像
【OpenCV 入门到精通 01】认识 OpenCV 与计算机视觉:从零建立全局认知封面图

【OpenCV 入门到精通 01】认识 OpenCV 与计算机视觉:从零建立全局认知

【OpenCV 入门到精通 01】认识 OpenCV 与计算机视觉:从零建立全局认知

标签:OpenCV 计算机视觉 图像处理 Python CV入门
难度:⭐ 入门 | 阅读时长:约 35 分钟 | 系列:第 01/12 集
前置要求:无 | 下一集:02 环境安装


写在前面

如果你搜过「图像处理怎么学」「OpenCV 是什么」,大概率听说过这个名字。OpenCV 几乎是每个计算机视觉工程师的 第一课——从读取一张照片,到检测人脸、跟踪车辆,它都能胜任。

本集不急着写代码,先帮你搞清楚:计算机视觉在做什么、OpenCV 能帮你做什么、学习路线怎么走。


本集学习目标

  • 理解计算机视觉的基本概念与应用
  • 了解 OpenCV 的发展历史与核心优势
  • 掌握图像在计算机中的表示方式(像素、通道、矩阵)
  • 认识 OpenCV-Python 的模块结构


1.1 什么是计算机视觉?

一句话定义

计算机视觉 = 让计算机从图像或视频中自动提取、理解信息的技术。

生活场景

场景计算机视觉在做什么
手机扫码识别二维码图案
美颜相机检测人脸、磨皮美白
自动驾驶识别车道线、行人、车辆
工业质检检测产品表面缺陷
医疗影像定位病灶区域
安防监控检测异常行为、人脸识别

主要任务分类

计算机视觉

图像处理

滤波 增强 变换

特征提取

角点 边缘 描述子

目标检测

找到物体位置

图像分割

像素级分类

视频分析

跟踪 光流 背景减除

三维视觉

深度 标定 重建


1.2 什么是 OpenCV?

名字的含义

OpenCV = Open Source Computer Vision Library(开源计算机视觉库)

核心特点

特点说明
开源免费BSD 许可证,商用友好
跨平台Windows / Linux / macOS / Android / iOS
多语言C++、Python、Java 等
功能全面2000+ 算法,覆盖 CV 全流程
高性能底层 C/C++ 优化,支持 GPU 加速
社区活跃全球最大 CV 开源社区之一

发展简史

年份里程碑
1999Intel 在俄罗斯发起 OpenCV 项目
2006OpenCV 1.0 发布
2009OpenCV 2.0,引入 C++ 接口
2015OpenCV 3.0,模块化重构
2018OpenCV 4.0,移除 C API,全面 C++11
2020+OpenCV 4.x 持续更新,DNN 模块增强

OpenCV-Python

OpenCV-Python 是 OpenCV 的 Python 绑定,底层调用 C++ 实现,兼顾 易用性 和 运行效率。

import cv2
print(cv2.__version__)  # 如 4.9.0
对比C++Python
性能最快略慢(够用)
开发效率较低高
适合嵌入式、极致性能学习、原型、科研

1.3 图像的数字化表示

像素(Pixel)

图像由一个个小方块组成,每个方块叫一个 像素,存储颜色信息。

一张 3×3 的灰度图:

┌───┬───┬───┐
│ 0 │128│255│  ← 每个数字代表亮度 (0=黑, 255=白)
├───┼───┼───┤
│ 64│192│ 32│
├───┼───┼───┤
│255│  0│128│
└───┴───┴───┘

彩色图像:三通道 BGR

OpenCV 默认使用 BGR 顺序(注意:不是 RGB!):

通道含义范围
B蓝色 Blue0~255
G绿色 Green0~255
R红色 Red0~255
彩色像素 = (B, G, R)
纯白 = (255, 255, 255)
纯黑 = (0, 0, 0)
纯红 = (0, 0, 255)   ← 注意 BGR 顺序!

NumPy 数组表示

OpenCV 中图像本质是 NumPy 多维数组:

图像类型数组形状dtype
灰度图(H, W)uint8
彩色图(H, W, 3)uint8
带 Alpha(H, W, 4)uint8
import numpy as np
# 一张 480×640 的彩色图
img = np.zeros((480, 640, 3), dtype=np.uint8)
print(img.shape)  # (480, 640, 3)

1.4 OpenCV 模块结构

根据 官方文档,主要模块如下:

模块功能本系列对应
core核心数据结构、矩阵运算第 05 集
imgproc图像处理(滤波、变换、形态学)第 06~08 集
highgui窗口显示、鼠标键盘交互第 03~04 集
videoio视频读写第 04、10 集
features2d特征检测与描述第 09 集
video运动分析、光流、跟踪第 10 集
ml机器学习(KNN、SVM)第 11 集
objdetect目标检测(级联分类器)第 12 集
dnn深度学习推理可与 YOLO 等结合
calib3d相机标定、3D 重建进阶

OpenCV

core 核心

imgproc 图像处理

highgui 界面

features2d 特征

video 视频分析

ml 机器学习

objdetect 目标检测

dnn 深度学习


1.5 学习路线规划

本系列 12 集路径

基础层 (01~04): 概念 → 环境 → 图像 → 视频
    ↓
进阶层 (05~08): 像素操作 → 颜色几何 → 滤波形态学 → 边缘轮廓
    ↓
高级层 (09~11): 特征匹配 → 视频分析 → 机器学习
    ↓
实战层 (12): 目标检测 + 综合项目

学 OpenCV 需要什么数学?

数学知识重要程度用在哪
基础算术必须像素运算
矩阵/向量推荐几何变换
微积分了解梯度、边缘检测
概率统计了解机器学习模块
线性代数进阶特征分解、SVD

💡 小白友好:本系列会先用直觉和图示讲解,再引入公式。


1.6 踩坑指南

坑正确认知
OpenCV 只能做 AIOpenCV 是传统 CV 库,AI 是 dnn 模块之一
OpenCV = 目标检测检测只是功能之一,图像处理才是基础
必须学 C++Python 版足够应对 90% 学习和项目
RGB 和 BGR 一样OpenCV 默认 BGR,和 PIL/matplotlib 不同
图像就是图片文件在内存中是 NumPy 数组

1.7 常见问题 FAQ

Q1:OpenCV 和 PIL/Pillow 有什么区别?
A:PIL 侧重图像读写和简单处理;OpenCV 是完整 CV 库,含特征检测、视频分析、机器学习等。做 CV 项目首选 OpenCV。

Q2:需要先学深度学习才能学 OpenCV 吗?
A:不需要。OpenCV 大量功能不依赖深度学习,且传统 CV 是 DL 的基础。

Q3:OpenCV 4.x 和 3.x 差别大吗?
A:4.x 移除了旧 C API,推荐新项目直接用 4.x。本系列基于 4.x。

Q4:OpenCV 能替代 YOLO 吗?
A:不能替代。OpenCV 提供传统检测(如 Haar 级联)和 DNN 推理接口;YOLO 等深度学习模型通常通过 OpenCV dnn 模块加载。


1.8 知识自测

  1. 用自己的话解释「计算机视觉」和「图像处理」的区别。
  2. OpenCV 中纯红色像素的 BGR 值是多少?
  3. 一张 1920×1080 的彩色图,NumPy 数组 shape 是什么?
  4. 判断:OpenCV 只能使用 C++ 开发。( )
📎 参考答案
  1. (0, 0, 255) — BGR 顺序
  2. (1080, 1920, 3) — 高×宽×通道
  3. ✗ — 支持 Python、Java 等多种语言

1.9 本集小结

概念要点
计算机视觉让机器理解图像/视频
OpenCV开源跨平台 CV 库,2000+ 算法
像素图像最小单元,0~255
BGROpenCV 默认颜色顺序
NumPy图像在内存中的表示

上一集下一集
系列首页第02集:环境安装 →

参考:OpenCV中文官方文档 | OpenCVTutorials

转载自 CSDN-专业IT技术社区

原文链接:https://blog.csdn.net/weixin_43025151/article/details/164425587

文章来源转载

评论

评论列表

微信小程序
QQ小程序

关于作者

点赞数:0
关注数:0
粉丝:0
文章:0
关注标签:0
加入于:--