当前位置: 首页 > news >正文

【OpenCV零基础保姆级入门】一篇吃透计算机视觉预处理!全套实战代码,适配YOLO/深度学习

一、前言:为什么学深度学习必学OpenCV?

很多同学学完CNN、YOLO、三维重建后发现:模型训练看懂了,却不会处理图片、读取视频、调用摄像头、预处理数据

OpenCV 就是计算机视觉的“工具箱”,是所有CV项目的前置基础:

  • YOLO检测前的图片读取、缩放、补边、去噪

  • 视频流实时推理、逐帧处理、保存结果视频

  • 摄像头实时采集、画面翻转、裁剪、标记框绘制

  • 数据集清洗、二值化、滤波、形态学处理

一句话:所有视觉项目,都离不开OpenCV!

关注VX工棕号:迪哥谈AI,回复暗号:123 即可获取

关注VX工棕号:迪哥谈AI,回复暗号:123 即可获取

二、OpenCV 是什么?通俗讲解

2.1 核心介绍

OpenCV(Open Source Computer Vision Library):开源跨平台计算机视觉库,由英特尔发起,目前工业界、学术界通用标准工具。

专门用于:图像读取、视频处理、特征检测、目标跟踪、视觉预处理

2.2 核心优势

  • 开源免费、轻量高效、运行速度快

  • 支持 Windows / Linux / Mac / 嵌入式设备

  • Python接口极简,新手零门槛

  • 完美配合 PyTorch、YOLO、深度学习项目

2.3 常见应用场景

图像分类、目标检测、人脸识别、车牌识别、监控分析、瑕疵检测、AR交互、机器人视觉、三维重建预处理。

三、环境安装(100%成功版)

3.1 安装命令

推荐安装完整版,包含所有拓展功能(SIFT、特征匹配等):

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

普通版(功能少,不推荐):pip install opencv-python

3.2 验证是否安装成功

import cv2 print(cv2.__version__)

输出版本号即安装完成。

四、OpenCV核心基础:图像本质(新手必懂)

4.1 图片在计算机里是什么?

图片 =像素矩阵

  • 灰度图:二维矩阵 [高, 宽],像素值 0~255(0黑、255白)

  • 彩色图:三维矩阵 [高, 宽, 通道]

4.2 重点:OpenCV通道顺序

OpenCV 默认 BGR 顺序!!!

普通图片是 RGB,OpenCV读取后是 BGR,画图、保存不受影响,但和PyTorch/Matplotlib 混用必须转换!(新手最大坑)

五、最常用基础操作(必学)

5.1 图片读取、显示、保存

import cv2 # 1. 读取图片 img = cv2.imread("test.jpg") # 2. 显示图片 cv2.imshow("window", img) cv2.waitKey(0) # 0=按任意键关闭 cv2.destroyAllWindows() # 3. 保存图片 cv2.imwrite("save.jpg", img)

关键知识点cv2.waitKey()必须写,否则窗口一闪而过!

5.2 灰度图转换(深度学习预处理高频)

gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) cv2.imshow("gray", gray) cv2.waitKey(0)

5.3 尺寸缩放 & 裁剪

# 缩放 resize_img = cv2.resize(img, (640, 640)) # 裁剪 [高起始:高结束, 宽起始:宽结束] crop_img = img[100:400, 100:400]

5.4 绘制矩形框、文字(YOLO可视化必备)

# 画框 cv2.rectangle(img, (50,50), (200,200), (0,0,255), 2) # 写字 cv2.putText(img, "Object", (50,40), cv2.FONT_HERSHEY_SIMPLEX, 0.8, (0,255,0), 2) cv2.imshow("draw", img) cv2.waitKey(0)

颜色格式:(B,G,R),线条厚度正数

六、视频 & 摄像头实时读取(实战核心)

所有视频检测、实时推理、摄像头项目通用代码!

6.1 本地视频逐帧读取

import cv2 cap = cv2.VideoCapture("test.mp4") while True: ret, frame = cap.read() if not ret: break cv2.imshow("video", frame) if cv2.waitKey(20) & 0xFF == ord("q"): break cap.release() cv2.destroyAllWindows()

6.2 电脑摄像头实时画面

cap = cv2.VideoCapture(0) while True: ret, frame = cap.read() cv2.imshow("camera", frame) if cv2.waitKey(1) & 0xFF == ord("q"): break cap.release() cv2.destroyAllWindows()

参数说明:VideoCapture(0) 代表默认摄像头

七、常用图像处理操作(数据集预处理必备)

7.1 二值化(黑白分割)

用于轮廓检测、字符识别、瑕疵检测

gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) ret, binary = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY) cv2.imshow("binary", binary) cv2.waitKey(0)

7.2 滤波去噪(图像平滑)

# 高斯模糊(最常用) gauss = cv2.GaussianBlur(img, (5,5), 0) # 均值滤波 mean = cv2.blur(img, (5,5))

7.3 边缘检测(Canny)

edge = cv2.Canny(img, 50, 150) cv2.imshow("edge", edge) cv2.waitKey(0)

八、深度学习最常用:BGR转RGB

重点!PyTorch、Matplotlib、数据集训练都是RGB,OpenCV读取是BGR,不转换会颜色错乱

img_rgb = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)

九、新手高频报错与解决方案

  • 窗口一闪而过:缺少cv2.waitKey()

  • 图片读取为None:路径中文/错误/文件不存在,OpenCV不支持中文路径

  • 摄像头打不开:被其他软件占用、设备序号不是0

  • 颜色诡异偏色:BGR/RGB未转换,和深度学习框架混用必转

十、OpenCV完整学习路线(适配深度学习)

阶段1:基础必会(1天)

读写图片视频、摄像头调用、缩放裁剪、绘图、颜色转换

阶段2:图像预处理(2天)

灰度、二值化、滤波、边缘检测、形态学操作、阈值分割

阶段3:进阶视觉能力(3-5天)

轮廓检测、特征点匹配、透视变换、视频保存、帧处理

阶段4:深度学习结合

YOLO画面预处理、实时推理画面绘制、数据集清洗、视频推理项目落地

十一、总结

OpenCV 是所有计算机视觉项目的地基

CNN、YOLO、图像分类、三维重建、视频分析,所有视觉项目第一步都是 OpenCV 预处理。

新手不用啃完所有函数,掌握本文全套操作,足以应付95%的深度学习实验和项目开发

http://www.cnnetsun.cn/news/2592150.html

相关文章:

  • AI写的毕业论文初稿双率超标?怎么选靠谱的降重降AI工具
  • 大模型AI校招核心考点解析:从Transformer到工程实践,助你拿下Offer!
  • Docker部署Nginx实战:宿主机端口映射详解与避坑指南
  • 私教服务 | 一场差点吵起来的测试环境搭建咨询,暴露了90%测试人的认知盲区
  • OPC中国是谁?智能体来了旗下开源共创社区全面介绍​
  • 别再混淆了!SAP库存转移全解析:MIGO 301/303 vs. UB STO到底怎么选?
  • 为什么企业都在做智能体战略?OPD 一人部门是最低成本路线
  • 可恢复流式传输:构建可靠AI应用的核心机制与实现挑战
  • 无耳洞星人狂喜[特殊字符]终于找到本命“耳饰”啦!
  • 嵌入式AES加密的机器学习安全防护系统设计
  • AMBA CHI协议DEACT状态下的Flit传输机制与工程实践
  • 小鹏汽车团队打造了一个专门测试AI“耳朵“的考场
  • 主动学习数据集划分
  • JAVA基于SSM/Vue/Springboot的家用电器在线销售系统的设计与实现 LW
  • 从零构建AI记忆系统:基于向量数据库与LLM的持久化上下文实践
  • 构建367引擎自治系统:自动化价值创造与社区互助的技术实践
  • TypeScript与Zapier SDK构建智能HubSpot公司信息补全工作流
  • 多模态时代下AI软硬件产业链的投资边界与配置权重
  • 具身智能计算方案与感知-决策-控制一体化
  • AI代理在生产数据库运维中的五大认知盲区与实战校正
  • 20260526_204029_RAG外部检索是多余的,英伟达最新成果颠覆认知
  • LLM网关:从成本失控到智能路由,构建AI应用的核心基础设施
  • RAG检索结果不够准?揭秘“双塔+单塔“组合背后的精准秘诀!秒懂工业级RAG架构核心!
  • SVM模型可解释性新视角:正交多项式核与ORCA框架深度解析
  • ESP32硬件IIC驱动SHT30温湿度传感器,从官方例程到实战避坑(附完整工程)
  • 你的电机速度跳来跳去?STM32 HAL库编码器测速的滤波与防溢出实战指南
  • 告别重复登录!用Playwright连接已打开的Chrome浏览器,保留你的会话和Cookie
  • 用STM32和OLED屏做个土壤湿度监测仪(附完整代码和接线图)
  • 别再只测总功耗了!用万用表实测ZCU104开发板在不同Linux负载下的电流变化
  • ViT如何‘喂’给Diffusion Model?图解U-ViT中Patch、Time Token与Long Skip的融合细节