计算机视觉基础|第2章 OpenCV图像基础操作(读写、窗口、像素操作)

发布时间:2026/9/28 17:56:09

计算机视觉基础|第2章 OpenCV图像基础操作(读写、窗口、像素操作)
目录2.1 本章学习目标2.2 图像读取 imread2.2.1 基本语法2.2.2 标准读取代码带判错2.2.3 opencv坑点2.3 图像显示 imshow 与窗口控制2.3.1 完整显示代码2.3.2 waitKey() 函数参数详解与实战用法2.3.3 可自由缩放窗口2.4 图像保存 imwrite2.5 图像 shape 与像素原理2.6 像素读取与像素修改2.6.1 读取单个像素2.6.2 修改像素颜色2.7 本章总结2.1 本章学习目标上一章我们了解了计算机视觉的基本概念、图像的数字化原理并成功搭建 OpenCV 开发环境。本章开始正式进入实战掌握 OpenCV 最核心、最基础的图像操作。学完本章你将掌握图片读取、显示、保存的标准代码写法解决新手高频报错路径问题、图片读空问题理解图像 shape 结构高度、宽度、通道数手动读取、修改图像像素真正理解图像是数字矩阵2.2 图像读取 imread在 OpenCV 中我们通过cv2.imread()函数完成图像读取操作这是所有计算机视觉实战任务的起始步骤。图像在计算机中并非可视画面而是以多维数字数组的形式存储彩色图像本质为三维数组后续所有图像处理操作都是对该数组数据的运算与修改。2.2.1 基本语法cv2.imread(filename, flags)filename文件路径尽量避免带有中文的路径opencv对于中文路径可能无法读取flags读取模式flags常用读取模式cv2.IMREAD_COLOR默认读取彩色图忽略透明度cv2.IMREAD_GRAYSCALE以灰度模式读取cv2.IMREAD_UNCHANGED完整读取包含透明通道flags 0 也是以灰度模式读取2.2.2 标准读取代码带判错新手最常见问题图片路径错误导致读取为空程序不报错但无法显示。所以加判空判断。不是非必须容易检查代码错误。import cv2 # 读取图片r 防止转义字符报错 #以彩色模式读取 img cv2.imread(rD:\pythoncode2\bigdata_ai40\Image\qie.png, cv2.IMREAD_COLOR) #判空防止路径错误、图片不存在 if img is None: print(图片读取失败请检查路径是否正确) else: print(图片读取成功) print(图像形状, img.shape)2.2.3 opencv坑点路径不要中文、不要空格极易读空Windows 路径加 r避免 \ 被当成转义字符OpenCV 读取彩色图是三维数组默认是BGR 通道不是 RGB2.3 图像显示 imshow 与窗口控制读取图片后使用cv2.imshow()展示图像配合 waitKey 和 destroyAllWindows 完成窗口控制可以显示多个窗口。函数语法cv2.imshow(winname, mat)winname窗口名称字符串类型用于自定义显示窗口的唯一标识建议使用英文、数字命名禁止使用中文、特殊符号和空格。mat图像矩阵数组类型传入通过cv2.imread()读取成功的图像数组对象是需要可视化展示的目标图像。重点避坑窗口名称严禁使用中文。OpenCV底层对中文窗口名兼容性极差使用中文会出现窗口乱码、显示异常甚至程序闪退、运行报错等问题统一使用英文、数字命名窗口即可。2.3.1 完整显示代码import cv2 img cv2.imread(rD:\pythoncode2\bigdata_ai40\Image\qie.png) if img is not None: #创建窗口并显示图片 cv2.imshow(picture, img) waitKey(0)无限等待按任意键关闭窗口 cv2.waitKey(0) #关闭所有窗口释放内存 cv2.destroyAllWindows()2.3.2 waitKey() 函数参数详解与实战用法cv2.waitKey()是 OpenCV 专属键盘监听函数用于控制图像窗口的停留时间是图像显示必不可少的配套函数无该函数窗口会瞬间闪退。函数返回值为按键对应的ASCII码数值可实现自定义按键交互逻辑。waitKey(0)无限等待模式调试首选程序持续阻塞、窗口一直停留按下任意键盘按键即可关闭窗口适配日常代码调试、效果查看场景。waitKey(delay)定时关闭模式传入正整数代表毫秒数如waitKey(2000)表示窗口停留2秒无按键操作则自动关闭窗口。自定义按键关闭窗口进阶实战利用函数返回的ASCII码可指定专属按键关闭窗口精准控制程序逻辑避免任意按键误触发关闭。waitKey(60) ASCII码窗口生效规则该函数仅对当前激活的最新窗口生效默认监听并关闭最后展示的图像窗口多窗口场景下需注意监听顺序。2.3.3 可自由缩放窗口默认窗口大小固定如需拖拽缩放可创建可调节窗口cv2.namedWindow(picture, cv2.WINDOW_NORMAL) cv2.imshow(picture, img)2.4 图像保存 imwrite使用cv2.imwrite()可以将处理后的图片保存到本地支持 jpg、png 格式互转。import cv2 img cv2.imread(rD:\pythoncode2\bigdata_ai40\Image\qie.png) if img is not None: #保存图片 res cv2.imwrite(rD:\pythoncode2\save.png, img) if res: print(图片保存成功)2.5 图像 shape 与像素原理第一章我们知道图片就是数字矩阵,矩阵的话可以理解为嵌套列表现在通过代码直观理解。打印 img.shape 会得到三元组(高度, 宽度, 通道数)高度 height图片有多少行像素宽度 width图片有多少列像素通道 channel彩色图3通道灰度图1通道超级重点先高后宽和我们平时宽×高相反90%新手会搞错2.6 像素读取与像素修改图像本质是数组我们可以直接通过坐标修改像素颜色。2.6.1 读取单个像素import cv2 img cv2.imread(rD:\pythoncode2\bigdata_ai40\Image\企鹅.png) #获取坐标 (100,100) 的像素值 pixel img[100, 100] print(像素值(BGR), pixel)2.6.2 修改像素颜色我们将图片某一坐标像素改为白色 (255,255,255)用切片更改某一区域像素值import cv2 img cv2.imread(rD:\pythoncode2\bigdata_ai40\Image\企鹅.png) #修改单个像素为白色 img[100, 100] [255, 255, 255] #修改一片区域为黑色 #切片某一区域 img[200:300, 200:300] [0, 0, 0] cv2.imshow(change, img) cv2.waitKey(0) cv2.destroyAllWindows()通过像素修改我们可以直观验证改变矩阵数值 改变图像画面。2.7 本章总结本章彻底打通了计算机视觉最底层的图像操作逻辑是后续所有图像处理、特征检测、目标识别的基础。核心知识点回顾掌握 imread、imshow、imwrite 三大基础操作学会判空、路径避坑、窗口控制理解 shape 顺序(高度, 宽度, 通道)能够手动读取、修改像素真正理解图像数字化原理

相关新闻

微信小程序自定义导航栏全适配指南:从刘海屏到胶囊按钮

微信小程序自定义导航栏全适配指南:从刘海屏到胶囊按钮

2026/9/28 17:55:22

1. 项目概述:自定义导航栏的挑战与机遇在微信小程序的开发过程中,导航栏是用户与产品交互的第一道门面。默认的导航栏虽然省心,但千篇一律的样式常常与精心设计的UI格格不入,尤其是在追求品牌沉浸感或特殊交互场景时。因此&#x…

双聚类算法:从局部模式挖掘到基因表达与推荐系统的实战应用

双聚类算法:从局部模式挖掘到基因表达与推荐系统的实战应用

2026/9/8 6:12:21

1. 项目概述:从“找群”到“找模式”的思维跃迁在机器学习的无监督学习领域,聚类算法大家都不陌生,K-Means、DBSCAN这些名字如雷贯耳,它们的核心任务是把数据点“物以类聚”,划分成不同的簇。但不知道你有没有遇到过这…

Python爬取央视视频实战:从抓包到完整下载的完整流程

Python爬取央视视频实战:从抓包到完整下载的完整流程

2026/9/9 13:14:07

一、环境准备 import requests import json import re import subprocess # 调用FFmpeg合并分片 需要安装:requests(HTTP请求)、FFmpeg(处理视频流)。 二、抓包定位接口 用F12或Charles抓包,聚焦央视App播…

CANN/GE ACL数据集缓冲区添加函数

CANN/GE ACL数据集缓冲区添加函数

2026/9/28 4:08:17

aclmdlAddDatasetBuffer 【免费下载链接】ge GE(Graph Engine)是面向昇腾的图编译器和执行器,提供了计算图优化、多流并行、内存复用和模型下沉等技术手段,加速模型执行效率,减少模型内存占用。 GE 提供对 PyTorch、Te…

用ffmpeg高效批量调整图片尺寸的实战指南

用ffmpeg高效批量调整图片尺寸的实战指南

2026/9/28 16:01:49

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

Transformers 音频特征提取工具库 audio_utils 全解析:从 Mel 刻度换算到对数 Mel 频谱

Transformers 音频特征提取工具库 audio_utils 全解析:从 Mel 刻度换算到对数 Mel 频谱

2026/9/28 2:15:29

Transformers 音频特征提取工具库 audio_utils 全解析:从 Mel 刻度换算到对数 Mel 频谱 【免费下载链接】transformers 🤗 Transformers: the model-definition framework for state-of-the-art machine learning models in text, vision, audio, and mu…

RustFS 多节点集群重启与滚动升级实战:Readiness、Quorum 与 Degraded 模式完全指南

RustFS 多节点集群重启与滚动升级实战:Readiness、Quorum 与 Degraded 模式完全指南

2026/9/28 3:14:54

RustFS 多节点集群重启与滚动升级实战:Readiness、Quorum 与 Degraded 模式完全指南 【免费下载链接】rustfs 🚀2.3x faster than MinIO for 4KB object payloads. RustFS is an open-source, S3-compatible high-performance object storage system sup…

Java Integer缓存揭秘:128陷阱原理、避坑与面试全解

Java Integer缓存揭秘:128陷阱原理、避坑与面试全解

2026/9/28 3:58:00

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

RustFS Scanner 数据用量发布权威性决策:配额准入如何获得可用的权威依据

RustFS Scanner 数据用量发布权威性决策:配额准入如何获得可用的权威依据

2026/9/28 3:47:14

RustFS Scanner 数据用量发布权威性决策:配额准入如何获得可用的权威依据 【免费下载链接】rustfs 🚀2.3x faster than MinIO for 4KB object payloads. RustFS is an open-source, S3-compatible high-performance object storage system supporting mi…

远程协作的工作台整理

远程协作的工作台整理

2026/9/28 16:01:48

远程协作的工作台整理远程协作的核心不是再加一个工具,而是让交接信息足够完整。异步任务要写明目标、输入位置、完成标准和需要决策的人。 工作台的最小配置 将日程、待办、代码和沟通入口收拢到少数固定位置;通知按紧急程度分层。工作台不需要模仿办公…

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

2026/9/28 5:05:21

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

2026/9/28 16:01:48

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…