当前位置: 首页 > news >正文

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

http://www.jsqmd.com/news/135739/

相关文章:

  • 基于VMD分解算法的信号处理与故障诊断:程序化实现及数据预测分类研究
  • 【毕业设计】基于SpringBoot+Vue技术的医疗器械管理系统设计与实现(源码+文档+远程调试,全bao定制等)
  • AUTOSAR学习资料大集合
  • 接口自动化测试框架搭建:从0到1构建企业级解决方案
  • Flutter---轮播图
  • 专利推荐系统实战手记:当协同过滤遇上用户画像
  • 当花朵学会组团解题:新型花授粉算法的暴力美学
  • 50、CNN的概述介绍
  • 2-[(1-戊炔酰基)氨基]-2-脱氧-D-葡萄糖 — 代谢调控研究的新型探针试剂 1635433-54-3
  • 千匠大宗电商系统:赋能煤炭能源行业产业升级
  • 51、卷积层(计算规则)
  • 【协议】vlan
  • 机械臂轨迹规划算法,基于改进灰狼加353多项式的机械臂轨迹规划时间最优算法。 改进灰狼改进的灰...
  • 基于改进鹈鹕算法(IPOA)优化BP神经网络的智能数据回归预测模型——IPOA-BP模型及其评...
  • MATLAB驱动防滑转模型ASR模型 ASR模型驱动防滑转模型 ?牵引力控制系统模型
  • 【技术报告解读】DeepSeek-OCR: Contexts Optical Compression
  • Java毕设选题推荐:基于SpringBoot的非遗产品交流销售平台的设计与实现基于springboot的非遗文化传承与推广平台系统【附源码、mysql、文档、调试+代码讲解+全bao等】
  • 超越CRUD:在AI时代,用TDD和整洁代码构筑不可替代的护城河
  • 基于LabVIEW的双通道波形发生器:探索信号的多彩世界
  • CI/CD时代的“零容忍“原则:为什么一次破损的主干提交会摧毁整个团队?
  • MATLAB 同步磁阻电机 ESO + PR 控制闭环仿真:转速电流双优的实现
  • 绿电直连项目的审批流程与政策申报指南
  • 计算机Java毕设实战-基于java零售与仓储管理系统的设计与实现基于javaweb的超市/仓储管理系统【完整源码+LW+部署说明+演示视频,全bao一条龙等】
  • Java毕设选题推荐:基于java零售与仓储管理系统的设计与实现基于Java的仓库管理系统(进销存)完整设计与实战【附源码、mysql、文档、调试+代码讲解+全bao等】
  • 一把烙铁干翻电机控制!基于STM32的工业级变频器实战
  • 鸿蒙应用开发之通过Swiper实现京东m站功能入口效果
  • 内容负责人必读:构建企业GEO优化体系的几大关键
  • 烦心之烦心
  • 长忆——我的OI回忆录
  • VMware Horizon 与 Docker 冲突排错记录