OpenCV的简介  

  • 图像、数字图像

  • 图像

图像 是指通过某种手段(如绘制、拍摄、扫描、显示等)产生的视觉表现形式,它在一个二维平面上(如纸张、屏幕、画布等)呈现视觉信息。简单来说,图像就是人眼能看到的一个画面。其中,“图”是物体反射或透射光的分布,“像”是人的视觉系统所接收到的图在人脑中的呈现。

  • 数字图像

数字图像是通过数字方式表示和存储的图像,它将图像分解为离散的像素点,每个像素点包含颜色、亮度等信息,并以数字数据的形式进行处理、传输和存储。

分类:二值图像、灰度值、彩色图

常见的文件格式

格式 特点 应用场景
JPG/JPEG 有损压缩,压缩比高,文件体积小,适合存储照片、网页图片等。 摄影、网页、社交媒体
PNG 无损压缩,支持透明通道,适合存储图标、插画、带透明背景的图像。 设计、UI 界面、简单图形
GIF 支持动画和透明背景,色彩数有限(最多 256 色),适合简单动画或表情包。 网页动画、表情包
BMP 无损存储,保留原始像素数据,文件体积大,常用于图像原始数据存储。 图像处理中间文件、打印输出
TIFF 无损格式,支持高质量印刷和专业图像编辑,常用于印刷、医疗影像等领域。 印刷出版、医学影像、设计
  • 🧠OpenCV的简介和安装

OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉与机器学习软件库,由英特尔公司发起并参与开发,目前由 Willow Garage 等机构维护。它提供了丰富的跨平台 API,支持 C++、Python、Java 等多种编程语言,广泛应用于图像处理、目标检测、人脸识别、视频分析等领域。

OpenCV的安装使用OpenCV前首先要安装numpy、matplotlib

直接下载安装

pip install opencv-python

pip install numpy

pip install matplotlib

 如果报错或需要版权,下载OpenCV的3.4.2.17版本

如果直接下载速度较慢或报错 使用镜像源下载

pip install opencv-python -i https://pypi.tuna.tsinghua.edu.cn/simple/

pip install numpy -i https://pypi.tuna.tsinghua.edu.cn/simple/

pip install matplotlib  -i https://pypi.tuna.tsinghua.edu.cn/simple/

安装验证 :展示目录中自己所选的照片(其中1.jpg是相对路径,可更换成绝对路径,图片所在的位置

#读取本地的某一个自己选择的照片
import cv2
zp = cv2.imread("1.jpg")#双引号里面一般写的是照片的具体路径或相对路径
cv2.imshow("image",zp)
cv2.waitKey(0)

环境安装具体详见 https://blog.csdn.net/weixin_70217160/article/details/149182956?spm=1001.2014.3001.5501

  • 🔧 OpenCV所包含的主要模块,以及主要模块的功能介绍

OpenCV 的功能非常广泛,主要可以分为以下几大类:

1.核心功能 (Core Functionality):

  • 基本数据结构(Mat - 用于存储图像和矩阵数据,PointRectScalar 等)。

  • 图像的基本操作(读取、写入、显示、像素访问、通道分离/合并)。

  • 绘图函数(线条、矩形、圆形、文本)。

  • 数组操作(矩阵运算、统计、线性代数)。

  • 文件 I/O(XML/YAML 文件的读写,用于存储配置、模型参数等)。

  • 错误处理。

2.图像处理 (Image Processing):

  • 几何变换: 缩放、旋转、仿射变换、透视变换 (warping)。
  • 色彩空间转换: RGB, HSV, Lab, Grayscale, YUV 等之间的转换。
  • 图像滤波 (平滑/模糊): 均值滤波、高斯滤波、中值滤波、双边滤波。
  • 形态学操作: 腐蚀、膨胀、开运算、闭运算、形态学梯度、顶帽、黑帽。
  • 图像阈值化: 全局阈值、自适应阈值、Otsu 阈值。
  • 图像金字塔: 高斯金字塔、拉普拉斯金字塔(用于图像融合、缩放等)。
  • 直方图: 计算、均衡化、比较。
  • 边缘检测: Sobel, Scharr, Laplacian, Canny。
  • 图像梯度: Sobel 导数。
  • 轮廓分析: 查找轮廓、轮廓特征(面积、周长、凸包、边界框、矩)、轮廓层级。
  • 图像分割: 分水岭算法、GrabCut 算法。

3.视频分析 (Video Analysis):

  • 运动分析与物体跟踪: 背景减除 (MOG2, KNN)、光流法 (Lucas-Kanade, Farneback)、均值漂移 (MeanShift), CamShift, TLD, MIL, BOOSTING, MEDIANFLOW, MOSSE, CSRT 等跟踪器。
  • 视频读写: 捕获摄像头视频流、读取视频文件、写入视频文件。

4.相机标定与 3D 重建 (Camera Calibration and 3D Reconstruction):

  • 相机标定: 使用棋盘格或圆形网格进行相机内参(焦距、主点、畸变系数)和外参(旋转、平移)标定。
  • 姿态估计: 解决 PnP 问题(Perspective-n-Point)。
  • 立体视觉: 视差图计算、深度图生成。
  • 结构光: 用于精确 3D 扫描。
  • SFM (Structure from Motion): 从多个视角恢复 3D 结构和相机运动。

5.特征检测与描述 (Feature Detection and Description):

  • 关键点检测: Harris 角点, Shi-Tomasi 角点, FAST, ORB, BRISK, AKAZE, MSER, SIFT, SURF (SIFT/SURF 通常在 opencv_contrib 中)。
  • 特征描述: SIFT, SURF, ORB, BRISK, AKAZE, FREAK 等描述符。
  • 特征匹配: 暴力匹配 (Brute-Force), FLANN (Fast Library for Approximate Nearest Neighbors) 匹配器。
  • 描述符匹配器: 用于在不同图像间匹配特征点。

6.目标检测 (Object Detection):

  • 基于传统特征的方法: Haar 级联分类器 (常用于人脸检测)、HOG (Histogram of Oriented Gradients) + SVM (常用于行人检测)。
  • 基于深度学习的方法 (通过 DNN 模块): 支持加载和运行预训练的深度学习模型(如 SSD, YOLO, Faster R-CNN, EfficientDet 等)进行目标检测、实例分割、语义分割等。OpenCV 可以加载来自 TensorFlow, PyTorch, Caffe, Darknet, ONNX 等框架的模型。

7.机器学习 (Machine Learning):

  • 包含一组经典的机器学习算法:
  • K-近邻 (KNN)
  • 支持向量机 (SVM)
  • 决策树
  • 提升 (Boosting - AdaBoost, Gradient Boosting)
  • 随机森林 (Random Trees)
  • 期望最大化 (EM)
  • 朴素贝叶斯分类器 (Normal Bayes Classifier)
  • 神经网络 (早期较简单的 MLP 实现,现在深度神经网络主要通过 DNN 模块加载外部模型)。
  • 主要用于分类、回归、聚类等任务,常与特征提取结合使用。对于复杂的深度学习任务,通常使用专门的框架训练模型,再用 OpenCV DNN 模块部署推理。

8.深度学习 (Deep Learning - DNN 模块):

  • OpenCV 的核心优势之一是其 dnn 模块。
  • 它是一个轻量级的深度学习推理引擎
  • 主要功能:
  • 加载预训练模型: 支持多种格式(TensorFlow, PyTorch (TorchScript), Caffe, Darknet, ONNX)。
  • 高效推理: 使用硬件加速(如果支持:OpenCL, Vulkan, Intel Inference Engine, NVIDIA CUDA/cuDNN, TensorRT)在 CPU 或 GPU 上运行模型进行预测(前向传播)。
  • 图像预处理/后处理: 提供方便的函数处理输入图像(缩放、归一化、通道交换)和解析输出结果(如目标检测框、分割掩码、关键点)。
  • 定位: 它不是一个深度学习训练框架,主要用于在边缘设备或不需要复杂训练流程的应用中高效地部署和运行训练好的模型。

9.计算摄影 (Computational Photography):

  • 图像去噪(非局部均值去噪)。
  • HDR 成像。
  • 图像修补(Inpainting)。
  • 图像缝合(Image Stitching / Panoramas)。

10.图形用户界面 (GUI):

  • highgui 模块提供基本的 GUI 功能:
  • 创建窗口显示图像。
  • 处理鼠标和键盘事件。
  • 滑动条 (Trackbar)。
  • 功能相对基础,对于复杂的 GUI 应用,通常结合 PyQt, Tkinter (Python) 或 Qt, GTK (C++) 等成熟的 GUI 框架使用。

11.其他工具:

  • 图像 I/O (支持多种格式:JPEG, PNG, TIFF, WebP 等)。
  • 优化 (部分算法使用 OpenCL 或 IPP 加速)。
  • 与 CUDA 的集成 (opencv_cuda 模块)。

🌐典型应用领域

  • 人脸识别与检测: 身份验证、照片管理、安防监控。

  • 手势识别: 人机交互、游戏控制。

  • 物体识别与跟踪: 自动驾驶(车辆、行人、交通标志识别)、机器人导航、视频监控、库存管理。

  • 增强现实 (AR): 虚拟物体叠加到真实场景(需要相机姿态估计)。

  • 图像/视频的增强与编辑: 滤镜、去噪、锐化、HDR。

  • 医学影像分析: 病灶检测、细胞计数、图像配准。

  • 工业自动化与检测: 产品缺陷检测、尺寸测量、条形码/二维码识别。

  • 运动分析: 体育动作捕捉、步态分析。

  • 无人机与机器人视觉: 避障、场景理解、SLAM (Simultaneous Localization and Mapping)。

  • 文档分析: OCR 预处理(文本区域检测、透视校正)。

  • 基于内容的图像检索: 利用视觉特征搜索相似图片。

  • 视频摘要: 提取关键帧。

Logo

脑启社区是一个专注类脑智能领域的开发者社区。欢迎加入社区,共建类脑智能生态。社区为开发者提供了丰富的开源类脑工具软件、类脑算法模型及数据集、类脑知识库、类脑技术培训课程以及类脑应用案例等资源。

更多推荐