跳到主要内容
极客日志极客日志
首页博客AI提示词GitHub精选代理工具
|注册
博客列表

目录

  1. Python cv2 库:OpenCV 图像处理与计算机视觉基础
  2. 安装
  3. 常见应用场景
  4. 核心概念
  5. 应用举例
  6. 例 1:读取图像并显示
  7. 例 2:保存图像
  8. 例 3:图像预处理(灰度、模糊、边缘)
  9. 例 4:使用摄像头实时捕获
  10. 例 5:图像绘图(绘制矩形、文本)
  11. 例 6:人脸检测(Haar 分类器)
  12. 常用函数与模块概览
  13. 补充说明
PythonAI算法

Python cv2 库:OpenCV 图像处理与计算机视觉基础

介绍 Python 第三方库 cv2(OpenCV 接口),涵盖安装方式、核心概念及应用场景。OpenCV 是跨平台开源计算机视觉库,支持图像处理、机器视觉及视频分析。文章详解了图像作为 NumPy 数组的特性(BGR 通道)、常用功能(读写、滤波、几何变换、视频捕获、人脸检测等),并通过代码示例展示了图像读取、保存、预处理、摄像头实时捕获、绘图及人脸检测的具体实现。同时总结了常用函数模块及与其他库(NumPy、PyTorch 等)的集成方式,强调其高性能与跨平台兼容性。

菩提发布于 2026/3/23更新于 2026/4/1626K 浏览

Python cv2 库:OpenCV 图像处理与计算机视觉基础

cv2 是 OpenCV 的 Python 接口。OpenCV(Open Source Computer Vision Library)是一个跨平台、开源的计算机视觉库,由 Intel 最早开发,现已广泛应用于图像处理、机器视觉、实时检测、视频分析等领域。借助 cv2,开发者可以轻松实现图像读写、滤波变换、特征提取、人脸识别、目标追踪等各类视觉任务。

安装

推荐使用 pip 安装预编译版本:

pip install opencv-python

如需视频/编解码支持:

pip install opencv-python-headless

如需完整扩展(含 contrib 模块):

pip install opencv-contrib-python

常见应用场景

  1. 图像读取、保存与格式转换。
  2. 图像滤波、灰度化、二值化、边缘检测。
  3. 图像几何变换(缩放、旋转、仿射等)。
  4. 视频读取与逐帧处理。
  5. 摄像头捕获与实时画面处理。
  6. 图像特征提取(角点、边缘、轮廓)。
  7. 人脸检测与识别、目标检测。
  8. OCR、姿态估计、手势识别等高级视觉任务。

核心概念

  1. 图像是 NumPy 数组:在 cv2 中,图像被读入为三维 NumPy 数组(形如 (H, W, 3)),每个像素值通常是 uint8 类型,通道顺序为 BGR(蓝绿红),而非常见的 RGB。
  2. 实时处理友好:OpenCV 对实时场景优化良好,结合摄像头、OpenCL、GPU 或嵌入式设备使用广泛。
  3. API 接口统一:无论是图像、视频还是实时流,大部分函数接口保持一致性,便于快速上手和调试。

应用举例

例 1:读取图像并显示

import cv2
img = cv2.imread("cat.jpg")  # 读取图片
cv2.imshow("Cat", img)       # 打开窗口显示
cv2.waitKey(0)               # 等待按键
cv2.destroyAllWindows()      # 关闭所有窗口

例 2:保存图像

cv2.imwrite("output.jpg", img)  # 将 NumPy 图像保存为文件

例 3:图像预处理(灰度、模糊、边缘)

gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
blur = cv2.GaussianBlur(gray, (5, 5), 0)
edges = cv2.Canny(blur, 50, 150)
cv2.imshow("Edges", edges)
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog

更多推荐文章

查看全部
  • Python 爬虫实战:爬取彩票历史开奖数据
  • AI 辅助 Java 零基础入门与实战教程
  • 基于 AI 辅助的 Java 零基础入门与基础实战指南
  • Telegram 搜索机器人搭建指南(含 Python 脚本)
  • AI 辅助 Java 零基础入门与核心实战教程
  • JavaScript 前端调用 Qwen3Guard-Gen-8B API 接口详解

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • RSA密钥对生成器

    生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online

  • Mermaid 预览与可视化编辑

    基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online

  • curl 转代码

    解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

例 4:使用摄像头实时捕获

cap = cv2.VideoCapture(0)  # 打开默认摄像头
while True:
    ret, frame = cap.read()
    if not ret:
        break
    cv2.imshow("Camera", frame)
    if cv2.waitKey(1) == ord('q'):
        break
cap.release()
cv2.destroyAllWindows()

例 5:图像绘图(绘制矩形、文本)

cv2.rectangle(img, (50, 50), (200, 200), (0, 255, 0), 2)
cv2.putText(img, "Hello OpenCV", (50, 40),
            cv2.FONT_HERSHEY_SIMPLEX, 1, (255, 255, 255), 2)
cv2.imshow("Annotated", img)

例 6:人脸检测(Haar 分类器)

face_cascade = cv2.CascadeClassifier(cv2.data.haarcascades + "haarcascade_frontalface_default.xml")
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
faces = face_cascade.detectMultiScale(gray, 1.3, 5)
for (x, y, w, h) in faces:
    cv2.rectangle(img, (x, y), (x + w, y + h), (255, 0, 0), 2)
cv2.imshow("Faces", img)

常用函数与模块概览

  1. 图像读写
    • cv2.imread(path):读取图像为 NumPy 数组
    • cv2.imwrite(path, image):保存图像
    • cv2.cvtColor(image, flag):颜色空间转换(如 BGR ↔ Gray)
  2. 图像处理
    • cv2.resize():图像缩放
    • cv2.GaussianBlur():高斯模糊
    • cv2.Canny():边缘检测
    • cv2.threshold():图像二值化
    • cv2.equalizeHist():直方图均衡化(常用于增强)
  3. 绘图与注释
    • cv2.line(), cv2.rectangle(), cv2.circle():绘制图形
    • cv2.putText():绘制文字
    • cv2.polylines():绘制轮廓
  4. 视频与摄像头
    • cv2.VideoCapture():打开视频或摄像头流
    • cap.read():读取帧
    • cv2.VideoWriter():保存视频
  5. 特征与识别
    • cv2.CascadeClassifier():Haar 特征分类器
    • cv2.SIFT(), cv2.ORB():关键点检测与匹配
    • cv2.findContours():轮廓提取

补充说明

  1. 图像数据结构说明
    • 彩色图像:(高度,宽度,3),BGR 顺序
    • 灰度图像:(高度,宽度),单通道
    • 像素值范围通常为 0~255,类型为 np.uint8
  2. 与其他库集成良好
    • 与 NumPy 无缝配合进行矩阵运算
    • 可与 matplotlib 联合可视化图像结果(需注意颜色通道顺序)
    • 与 PyTorch、TensorFlow 搭配用于预处理模型输入
  3. 性能与兼容性
    • OpenCV 底层用 C++ 实现,性能极高
    • Python 接口部分使用 Cython 封装,调用开销极小
    • 支持跨平台运行(Windows、Linux、macOS、树莓派)
  • Docker 部署 Web-Check 并通过 cpolar 实现公网远程访问
  • PyCharm 与 GitHub Copilot 配置指南:学生认证流程详解
  • 基于 STM32 的智能家居环境监测系统设计
  • 基于 FPGA 的高精度 TDC 设计
  • 深入 llama.cpp:llama-server 从命令行到 HTTP Server
  • 基于视觉语言动作的竞速无人机自主导航 RaceVLA 深度解析
  • 基于 2-RSS-1U 的双足机器人并联踝关节分析与实现
  • ChatGPT 降低 AIGC 率的指令策略与最佳实践
  • Kimi Code:Moonshot AI 推出的智能编程助手
  • K-RagRec:基于知识图谱检索增强生成的 LLM 推荐系统
  • Web-Check 网站检测工具部署与 cpolar 远程访问配置
  • Leaflet 与 SpringBoot 实现地图点位点击获取当地时间
  • 逻辑回归详解:从原理到代码实现
  • C 语言代码优化与性能调优:编译器优化、内存优化、算法优化与工具链配合