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

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

admin4周前 (03-18)Python42

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装饰器实战:从零到精通的5个经典场景

Python装饰器(Decorator)是一个非常强大且优雅的语言特性,它允许我们在不修改原函数代码的情况下,为函数添加额外的功能。本文将通过5个实战场景,带你深入理解装饰器的原理和应用。 一、装饰...

Python 类型提示实战指南:让代码更健壮

类型提示并不是强制执行的类型系统,而是一种可选的代码文档化工具。它通过注解函数参数和返回值的类型,帮助开发者更清晰地表达意图,同时让 IDE 和类型检查器(如 mypy)能够提前发现潜在的类型错误。...

Python 上下文管理器深度解析与实战应用

# Python 上下文管理器深度解析与实战应用 ## 概述 Python 的上下文管理器(Context Manager)是一个非常优雅且强大的特性,它通过 `with` 语句为我们提供了一种自...

Python 装饰器高级实战:从基础到精通的5个实用技巧

引言:为什么要深入掌握装饰器? 装饰器是 Python 中最优雅的元编程工具之一,它能在不修改原函数代码的情况下,动态地增加功能。很多开发者都知道如何使用 @timer 计时或 @cache 缓存,...

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

Python装饰器是Python中最优雅的特性之一,它允许我们在不修改函数源代码的情况下,动态地扩展函数的功能。本文将从基础概念出发,深入讲解装饰器的原理、用法和最佳实践,帮助你真正掌握这一强大的Py...

Python 列表推导式与生成器的高级用法

在日常 Python 开发中,我们经常需要对序列数据进行转换和过滤。传统的循环写法虽然直观,但往往代码冗长。Python 的列表推导式提供了一种优雅的替代方案,它不仅代码更简洁,而且执行效率通常更高。...

发表评论

访客

看不清,换一张

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