当前位置:首页 > Python > 正文内容

[Python 教程] OpenCV-Python 入门:图像处理基础详解

admin7个月前 (03-18)Python273

OpenCV-Python 入门:图像处理基础详解

OpenCV 是一个跨平台计算机视觉库,轻量级且高效,支持 Python 接口。本文将系统介绍 OpenCV 的核心概念和基础操作。

一、OpenCV 简介

OpenCV 可以运行在 Linux、Windows 和 Mac OS 上,由 C 函数和 C++ 类构成,实现了图像处理和计算机视觉的通用算法。

二、安装方法

# 安装 NumPy
pip install numpy

# 安装 OpenCV(主模块)
pip install opencv-python

# 安装完整包(含附加模块)
pip install opencv-contrib-python

三、核心模块

模块功能
core核心数据结构
imgproc图像滤波、几何变换、颜色空间转换
imgcodecs图像文件读写
highguiGUI 操作(窗口、滑动条、键盘鼠标事件)
videoio视频捕获和编解码
video视频分析(背景减法、运动估计、目标跟踪)
dnn深度神经网络
ml机器学习(分类、回归、聚类)
objdetect目标检测(人脸、眼睛、行人等)

四、应用场景

  • 人脸识别系统

  • 手势识别与人机交互

  • 物体识别与检测

  • 医学图像分析

  • 运动跟踪

  • 增强现实

  • 机器人与自动驾驶

五、图像基础概念

5.1 像素与颜色

数字图像由像素组成,RGB 模型中每个通道取值范围 [0, 255]。800×1200 分辨率的图像包含 96 万像素。

5.2 图像文件类型

  • BMP - Windows 位图

  • JPEG - 有损压缩

  • PNG - 无损压缩,支持透明

  • TIFF - 高质量图像存储

六、OpenCV 重要特性

6.1 坐标系

左上角为原点 (0, 0),像素索引从 0 开始。

6.2 BGR 颜色顺序

注意:OpenCV 使用 BGR 而非 RGB 顺序(历史原因)。

import cv2
import numpy as np

# 读取图像(BGR 顺序)
img = cv2.imread('image.jpg')

# BGR 转 RGB
img_rgb = img[:, :, ::-1]

# 或者使用 split/merge
b, g, r = cv2.split(img)
img_rgb = cv2.merge([r, g, b])

七、像素操作

7.1 访问像素

# 访问彩色图像像素 (x=40, y=6)
(b, g, r) = img[6, 40]

# 访问单个通道
b = img[6, 40, 0]

# 获取图像属性
height, width, channels = img.shape
total_pixels = img.size
data_type = img.dtype  # uint8

7.2 修改像素

# 设置像素为红色
img[6, 40] = (0, 0, 255)

# 获取区域(ROI)
top_left = img[0:50, 0:50]

7.3 灰度图像处理

# 读取灰度图像
gray = cv2.imread('image.jpg', cv2.IMREAD_GRAYSCALE)

# 访问像素强度
intensity = gray[6, 40]

# 修改像素
gray[6, 40] = 0  # 黑色

八、图像显示

import cv2

# 显示图像
cv2.imshow("Image", img)

# 等待键盘输入(0 表示无限等待)
cv2.waitKey(0)

# 关闭所有窗口
cv2.destroyAllWindows()

九、总结

本文介绍了 OpenCV 的基础知识,包括安装、核心模块、图像概念、像素操作等。掌握这些基础后,可以进一步学习图像滤波、几何变换、特征检测等高级技术。

十、后续学习方向

  • 图像滤波与平滑

  • 边缘检测

  • 轮廓查找与分析

  • 特征点检测

  • 目标识别与跟踪

  • 深度学习集成

相关文章

[Python 教程] NumPy 数组操作详解

NumPy 数组操作详解 NumPy 是 Python 科学计算的基础库,提供高性能的多维数组对象。本文详细介绍 NumPy 数组的核心操作。 一、创建数组 import numpy as np...

[Python 教程] Python 多线程编程指南

Python 多线程编程指南 Python 的 threading 模块提供多线程支持。本文介绍多线程编程的基础和实用技巧。 一、创建线程 import threading import time...

Python 上下文管理器:从入门到实战

在 Python 编程中,资源管理是一个永恒的话题。无论是打开文件、连接数据库,还是获取网络资源,我们都需要确保在使用完毕后正确释放这些资源。传统的 try-finally 模式虽然有效,但代码冗长且...

Python 装饰器:从入门到实战的完整指南

装饰器(Decorator)是 Python中一种优雅的设计模式,它允许我们在不修改原函数代码的前提下,动态地添加功能。想象一下,你有一个已经写好的函数,现在需要为它添加日志记录、性能监控、权限验证等...

Python 装饰器从入门到实战:5 个实用场景详解

装饰器(Decorator)是 Python 中一种优雅的设计模式,它允许我们在不修改原函数代码的前提下,动态地给函数添加功能。想象一下,你有一个已经写好的函数,现在想给它添加日志记录、性能监控或权限...

Python装饰器完全指南:从原理到实战

Python 装饰器(Decorator)是 Python 中最强大也是最优雅的特性之一。它允许你在不修改原函数代码的情况下,动态地给函数添加功能。这种设计模式体现了 AOP(面向切面编程)的思想,让...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。