计算机视觉基础|第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 顺序(高度, 宽度, 通道)能够手动读取、修改像素真正理解图像数字化原理

相关新闻

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

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

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

2026/8/6 5:11:05 阅读更多 →
双聚类算法:从局部模式挖掘到基因表达与推荐系统的实战应用

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

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

2026/8/6 5:11:05 阅读更多 →
重大升级:安装一个 Skill,让 AI 在一杯咖啡时间内自动剪出成片,并保留可编辑工程

重大升级:安装一个 Skill,让 AI 在一杯咖啡时间内自动剪出成片,并保留可编辑工程

重大升级:安装一个 Skill,让 AI 在一杯咖啡时间内自动剪出成片,并保留可编辑工程 Timeline Studio v0.9.1 正式发布。只需要安装一个 Agent Skill,提供图片、视频、产品素材或者网站地址,AI 就能自动完成内容分析、脚本…

2026/8/6 5:10:05 阅读更多 →

最新新闻

GB28181图像抓拍全解析:从协议原理到工程实现

GB28181图像抓拍全解析:从协议原理到工程实现

1. 项目概述:从协议到画面的关键一步在GB/T 28181协议构建的庞大视频监控网络中,实时视频流和录像回放是基础能力,而“图像抓拍”则是将动态视频流中某个瞬间定格为静态图片的关键功能。这个功能看似简单——不就是截个图吗?但在大…

2026/8/6 6:16:43 阅读更多 →
MySQL安装与连接全攻略:从版本选择到实战连接

MySQL安装与连接全攻略:从版本选择到实战连接

1. 项目概述:从零到一构建你的数据基石 每次接手一个新项目,或者在新电脑上搭建开发环境,数据库的安装和连接总是绕不开的第一步。对于绝大多数后端应用、数据分析项目乃至个人学习而言,MySQL作为一款久经考验、生态成熟的关系型数…

2026/8/6 6:16:43 阅读更多 →
GESP一级编程题解析:买文具的算法实现与教学应用

GESP一级编程题解析:买文具的算法实现与教学应用

1. 项目背景与需求解析《B3863 [GESP202309 一级] 买文具》这个题目看似简单,实则蕴含了编程启蒙教育的经典教学场景。作为GESP(青少年编程能力等级考试)一级的考题,它考察的是基础算术运算和简单逻辑处理能力,这正是7…

2026/8/6 6:16:43 阅读更多 →
Linux手动安装MySQL 8.0:从零到精通的离线部署与深度调优指南

Linux手动安装MySQL 8.0:从零到精通的离线部署与深度调优指南

1. 项目概述:为什么选择手动安装MySQL?在Linux世界里安装MySQL,你可能会立刻想到apt-get install mysql-server或者yum install mysql-community-server。一键安装,方便快捷,这确实是大多数场景下的首选。但作为一名有…

2026/8/6 6:16:43 阅读更多 →
基于WorkBody与Markdown构建公众号自动化发布工作流

基于WorkBody与Markdown构建公众号自动化发布工作流

最近在和一些做内容的朋友聊天,发现一个挺有意思的现象:很多人对“自动化”的理解,还停留在“一键生成”的幻想里。比如,看到“1分钟搞定公众号日更”这样的标题,第一反应往往是兴奋,觉得找到了解决内容焦虑…

2026/8/6 6:16:43 阅读更多 →
Linux入门指南:从内核原理到主流发行版选型与实战

Linux入门指南:从内核原理到主流发行版选型与实战

1. Linux世界初探:从“另一个世界”到日常伙伴 如果你刚接触计算机,或者一直生活在Windows或macOS的“温室”里,第一次听说“Linux”这个词,可能会觉得它神秘、高深,甚至有点“极客专属”的意味。我第一次接触Linux是…

2026/8/6 6:15:42 阅读更多 →

日新闻

深入解析LimboAI C++内核:架构设计与性能优化实战

深入解析LimboAI C++内核:架构设计与性能优化实战

1. 项目概述:为什么我们需要深入LimboAI的C内核?如果你是一名使用Godot引擎的游戏开发者,尤其是对AI行为逻辑有较高要求的项目,那么LimboAI这个名字你大概率不会陌生。它作为Godot 4生态中一个备受瞩目的行为树与状态机插件&#…

2026/8/6 0:00:06 阅读更多 →
Unity 2D游戏敌人AI系统:基于PlayMaker状态机与2D Toolkit的实战开发

Unity 2D游戏敌人AI系统:基于PlayMaker状态机与2D Toolkit的实战开发

1. 项目概述与核心思路大家好,我是老张,一个在游戏开发一线摸爬滚打了十多年的老码农。今天咱们接着聊《空洞骑士》风格2D动作游戏的Demo制作。上一期我们搭好了基础框架,处理了角色移动和碰撞,这一期,我们要让游戏世界…

2026/8/6 0:00:06 阅读更多 →
被动防火门市场前景发展趋势

被动防火门市场前景发展趋势

被动防火门依靠材质结构、密闭构造阻隔烟火蔓延,无需电控启动,是建筑被动消防系统核心构件,行业依托新规管控、城市更新、工业安全升级迎来稳定扩容,整体朝着合规化、专项化、低碳化、智能化方向发展。现阶段 GB12955‑2024 新版国…

2026/8/6 0:00:06 阅读更多 →

周新闻

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

1. 从水管网络到最大流:一个核心问题的诞生想象一下,你是一个城市供水系统的总工程师。你的城市有多个水源(水库),需要通过一个复杂的地下管道网络,将水输送到各个居民区。每条管道都有其最大通水能力&…

2026/8/5 15:00:43 阅读更多 →
基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

2026/8/5 13:13:56 阅读更多 →
MATLAB xcorr函数详解:从互相关原理到四大实战应用

MATLAB xcorr函数详解:从互相关原理到四大实战应用

1. 从一次信号“找茬”说起:为什么我们需要互相关几年前,我在处理一组声学传感器数据时遇到了一个棘手的问题。我有两个麦克风记录了一段相同的音频信号,理论上它们接收到的声音波形应该非常相似,只是由于麦克风位置不同&#xff…

2026/8/5 10:20:36 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/5 23:28:39 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/5 21:00:14 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/5 23:46:51 阅读更多 →