news 2026/4/17 16:26:52

49、图像的相关知识

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
49、图像的相关知识

图像的分类

  • 按照颜色和灰度来分类,被分为4种基本分类
  • 二值图像: 只有01构成只有黑白两色
  • 灰度图像:[0,255] :0表示纯黑色,255表示纯白色。中间的就是黑到白的过渡色
  • 索引图像:二维矩阵 + 颜色索引矩阵map的二维数组(x3的),例如二维矩阵的值分为是0,255。则这个就是大小就是255 *3
  • 真彩RGB图像:红(R),绿(G),蓝(B)

图像的加载


一、整体流程(一句话版)

读图 → 转成数组 → 交给 matplotlib → 显示或处理

二、详细流程拆解

① 导入库

import matplotlib.pyplot as plt

② 读取图像(最关键一步)

img = plt.imread("cat.jpg")
这一步发生了什么?
  • 从磁盘读取图片文件(jpg / png / bmp 等)
  • 自动解码
  • 转成NumPy 数组

📌img的本质是:

numpy.ndarray

③ 图像在内存中的形式(非常重要)

彩色图像(RGB)
img.shape # (H, W, 3)
  • H:高度(像素)
  • W:宽度
  • 3:RGB 三个通道
灰度图
# (H, W)
像素值范围

图片格式

像素值

PNG

0 ~ 1(float)

JPG

0 ~ 255(uint8)


④ 显示图像

plt.imshow(img)

这一步做了什么?

  • NumPy 数组 → 映射成颜色
  • 默认:
    • RGB → 彩色
    • 单通道 → 伪彩色

⑤ 关闭坐标轴(可选)

plt.axis('off')

⑥ 真正显示窗口

plt.show()

📌没有plt.show(),图不会真正显示


三、完整最小示例(标准流程)

import matplotlib.pyplot as plt img = plt.imread("cat.jpg") # 1. 读图 plt.imshow(img) # 2. 显示 plt.axis('off') # 3. 去掉坐标 plt.show() # 4. 显示窗口

四、常见变体流程(你以后一定会用)

1️⃣ 显示灰度图

plt.imshow(img, cmap='gray') plt.show()

📌cmap= colormap(颜色映射)


2️⃣ 只读图,不显示(用于 CNN / PyTorch)

img = plt.imread("cat.jpg") # 后面直接送进模型

3️⃣ 和 OpenCV 的区别(容易踩坑)

工具

读取顺序

plt.imread

RGB

cv2.imread

BGR

所以 OpenCV 读的图用plt.imshow显示会颜色反了


五、在深度学习里的典型流程(结合你当前学习)

img = plt.imread("cat.jpg") # H W C img = img / 255.0 # 归一化 img = img.transpose(2, 0, 1) # C H W(PyTorch)

六、一句话总结(记住这个)

**plt.imread负责把图片 → NumPy 数组
plt.imshow负责把数组 → 图像
plt.show才是真正显示**

测试代码

import matplotlib.pyplot as plt import torch # 绘制全0,全1图像 def dm01(): img1 = torch.zeros(200,200,3) plt.imshow(img1) plt.show() img2 = torch.full((200, 200, 3), 255) plt.imshow(img2) plt.show() pass def dm02(): # 转成 NumPy 数组 img1 = plt.imread("../data/img.jpg") plt.imshow(img1) plt.show() print(f'img1.shape:{img1.shape}') img2 = plt.imread("../data/a.jpg") plt.imshow(img2) plt.show() print(f'img2.shape:{img2.shape}') #保存图像 plt.imsave("../data/女画像.png",img1) plt.imsave("../data/瞎子.png",img2) pass if __name__ == '__main__': dm01() dm02()

测试结果

D:\pythonDemo\.venv\Scripts\python.exe -X pycache_prefix=C:\Users\Administrator.SY-202408261506\AppData\Local\JetBrains\PyCharm2025.3\cpython-cache "D:/Software/PyCharm 2025.3/plugins/python-ce/helpers/pydev/pydevd.py" --multiprocess --qt-support=auto --client 127.0.0.1 --port 57594 --file D:\pythonDemo\demo\test29_images.py Connected to: <socket.socket fd=668, family=2, type=1, proto=0, laddr=('127.0.0.1', 57605), raddr=('127.0.0.1', 57594)>. Connected to pydev debugger (build 253.28294.336) img1.shape:(640, 640, 3) img2.shape:(737, 920, 3) Process finished with exit code 0

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/14 8:16:39

1 小时速通!手把手教你从零搭建 Astro 博客并上线

引言 上周在掘金刷文章,点开一个技术博客,0.8秒就完整加载完了,页面切换丝滑得像在看App。再看看自己的WordPress博客——3秒白屏,等得我自己都想关了。那一刻我就在想,是不是该换个框架了? 说实话,这不是我第一次有这个想法。之前也折腾过Hexo、Hugo,甚至试过用Gatsby,但每…

作者头像 李华
网站建设 2026/4/16 16:46:37

云南昆明/南宁/海南海口商场外观美陈包装升级设计公司【力荐】

在昆明的春城暖阳里、南宁的烟火街巷旁、海口的椰风海韵中&#xff0c;商场的角色早已悄然转变。它不再仅仅是满足购物消费需求的场所&#xff0c;更逐渐成为承载城市美学气质、串联人们社交情感的核心公共空间。肆墨设计顾问有限公司肆墨设计&#xff08;Xmore Design&#xf…

作者头像 李华
网站建设 2026/4/17 18:06:58

接口自动化测试框架搭建:从0到1构建企业级解决方案

为何需要企业级测试框架&#xff1f;随着微服务架构的普及和后端服务复杂度的提升&#xff0c;接口作为服务间通信的契约&#xff0c;其稳定性和正确性至关重要。零散、临时的测试脚本虽能解一时之急&#xff0c;但长期来看存在维护成本高、复用性差、执行效率低、报告不统一等…

作者头像 李华
网站建设 2026/4/9 16:48:04

机械臂轨迹规划算法,基于改进灰狼加353多项式的机械臂轨迹规划时间最优算法。 改进灰狼改进的灰...

机械臂轨迹规划算法&#xff0c;基于改进灰狼加353多项式的机械臂轨迹规划时间最优算法。 改进灰狼改进的灰狼优化算法(CGWO),该算法采用基于余弦规律变化的收敛因子,平衡算法的全局搜索和局部搜索能力。咱们今天来唠唠机械臂轨迹规划里那个让人头秃的问题——怎么让机械臂在保…

作者头像 李华
网站建设 2026/4/13 8:05:16

【TIM控制器(定时器)原理】

使用精准的时基、通过硬件的方式&#xff0c;实现定时功能。定时器的核心就是计数器。STM32定时器分类定时器类型具体子类型核心功能典型应用场景常规定时器基本定时器1. 16 位自动重装计数器&#xff0c;仅向上计数2. 触发 DAC / 定时器同步3. 基础定时 / 溢出中断- 简单周期性…

作者头像 李华