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

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

admin2个月前 (03-18)Python79

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 教程] Python 多线程编程指南

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

Python 上下文管理器:不只是 with 语句那么简单

在 Python 编程中,上下文管理器(Context Manager)是一个被低估的强大工具。大多数开发者只知道用 with open() 来安全地处理文件,但实际上,上下文管理器的应用场景远不止于...

Python 上下文管理器实战:从 with 语句到自定义资源管理

在 Python 编程中,上下文管理器(Context Manager)是一个强大但常被低估的特性。当你使用 open() 函数读取文件时,那个熟悉的 with 语句背后,正是上下文管理器在默默工作。...

Python 装饰器的 5 个实用技巧,让你的代码更优雅

在 Python 编程中,装饰器(Decorator)是一个强大而优雅的工具。很多初学者对装饰器的理解停留在@staticmethod 或@classmethod 这类内置装饰器上,但实际上,自定义装...

Python 装饰器进阶:从入门到实战,写出更灵活的函数增强技巧

# Python 装饰器进阶:从入门到实战,写出更灵活的函数增强技巧 ## 简介 很多 Python 开发者都听过装饰器,也知道怎么写简单的装饰器。但大多数人对装饰器的进阶用法,比如带参数的装饰器、...

Python 异步编程实战:从入门到精通

在 Python 开发中,我们经常会遇到需要同时处理多个 I/O 操作的场景。比如同时向多个 API 发送请求、批量下载文件、或者处理实时数据流。传统的同步方式会阻塞主线程,导致性能瓶颈。而异步编程通...

发表评论

访客

看不清,换一张

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