吴恩达机器学习的课程作业里,经常会出现以mat数据存储的图像,为此我十分好奇,中间过程是怎么实现的,这篇博客简单的学习一下:

首先,我们看一下图片:(图片来源于网络,如有侵权,请立刻联系我删除


导入需要用到的包

import PIL.Image as Image
import numpy as np
import pandas as pd
import os
import matplotlib.pyplot as plt
from scipy.io import loadmat
file_name = "113936HmJVY.jpg"

将图片转换为矩阵

def image_to_matrix(file_name):# 读取图片image = Image.open(file_name)# 显示图片image.show()width, height = image.size# 灰度化image_grey = image.convert("L")data = image_grey.getdata()data = np.matrix(data, dtype="float") / 255.0new_data = np.reshape(data, (height, width))return new_data

我们生成的数据矩阵为:

[[0.05098039 0.07058824 0.08235294 ... 0.11372549 0.10588235 0.11372549][0.05490196 0.07058824 0.09019608 ... 0.10588235 0.10588235 0.10980392][0.07058824 0.0745098  0.09411765 ... 0.10980392 0.10980392 0.10980392]...[0.07843137 0.09019608 0.08627451 ... 0.23529412 0.23921569 0.23137255][0.0627451  0.07058824 0.07058824 ... 0.23921569 0.23529412 0.22352941][0.07843137 0.0745098  0.0745098  ... 0.24705882 0.23921569 0.22745098]]

我们转换成dataframe的格式,方便查看:

dataframe = pd.DataFrame(data=data)
print(dataframe)
          0         1         2     ...      1917      1918      1919
0     0.050980  0.070588  0.082353  ...  0.113725  0.105882  0.113725
1     0.054902  0.070588  0.090196  ...  0.105882  0.105882  0.109804
2     0.070588  0.074510  0.094118  ...  0.109804  0.109804  0.109804
3     0.066667  0.090196  0.125490  ...  0.109804  0.101961  0.105882
4     0.070588  0.109804  0.137255  ...  0.109804  0.101961  0.109804
...        ...       ...       ...  ...       ...       ...       ...
1075  0.074510  0.062745  0.070588  ...  0.227451  0.227451  0.227451
1076  0.094118  0.094118  0.094118  ...  0.231373  0.239216  0.231373
1077  0.078431  0.090196  0.086275  ...  0.235294  0.239216  0.231373
1078  0.062745  0.070588  0.070588  ...  0.239216  0.235294  0.223529
1079  0.078431  0.074510  0.074510  ...  0.247059  0.239216  0.227451

可以看出,我们的图像大小为:1920*1080

将矩阵转换为图片

def matrix_to_image(data):data = data * 255.0new_im = Image.fromarray(data)return new_im
new_im = matrix_to_image(data)
plt.imshow(data, cmap=plt.cm.gray, interpolation="nearest")
new_im.show()


可以实现!

上面要先对图片去除颜色,就是变成黑白的,转换成二维数据矩阵,不去颜色的还要保存颜色的,然后后面转换就不行了。然后利用Image.fromarray(data) 新建图片

完整代码

import PIL.Image as Image
import numpy as np
import pandas as pd
import os
import matplotlib.pyplot as plt
from scipy.io import loadmat# 将图片转换为矩阵
def image_to_matrix(file_name):# 读取图片image = Image.open(file_name)# 显示图片image.show()width, height = image.size# 灰度化image_grey = image.convert("L")data = image_grey.getdata()data = np.matrix(data, dtype="float") / 255.0new_data = np.reshape(data, (height, width))return new_data# 将矩阵转换为图片
def matrix_to_image(data):data = data * 255.0new_im = Image.fromarray(data)return new_im# 定义图片路径
file_name = "113936HmJVY.jpg"# 将图片转换为矩阵并输出到csv文件
data = image_to_matrix(file_name)
print(data)
print('=='*30)
dataframe = pd.DataFrame(data=data)
print(dataframe)
# dataframe.to_csv('d:/out.csv', sep=' ', header=False, float_format='%.2f', index=False)
# 将矩阵转换为图片
new_im = matrix_to_image(data)
plt.imshow(data, cmap=plt.cm.gray, interpolation="nearest")
new_im.show()

(娱乐项目)Python图片转换成矩阵数据,矩阵数据转换成图片相关推荐

  1. 用Python实现Flickr照片文本数据下载入库及图片保存(第一次帮忙)

    用Python实现Flickr照片文本数据下载入库及图片保存_fbc3173的博客-CSDN博客 来源 #原来的代码 #!/usr/bin/python import requests import ...

  2. Python实现从excel读取数据并绘制成精美图像

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! Pyth ...

  3. Python dataframe指定列顺序输出 + 列数据转化成字符 + 数据框转化成列表

    参考: (3条消息)pandas中的DataFrame按指定顺序输出所有列 - quintind的专栏 - CSDN博客 https://blog.csdn.net/quintind/article/ ...

  4. 利用PYTHON将netcdf(.nc)格式数据转换成JSON GeoJSON

    PYTHON netcdf(.nc)格式数据转JSON GeoJSON 代码 代码解释 代码 废话不多,直接上代码 #%% import xarray as xr import json from d ...

  5. Python脚本把支付宝和微信账单数据转换成随手记APP的excel标准模板导入

    目录 实现初衷 下载账单流水 微信账单 支付宝账单 处理数据 账单文件命名及存放 执行Python脚本 随手记导入数据 查看账单 代码实现 实现初衷 每天通过手动记账太麻烦,而且要精细到每一项支付的内 ...

  6. QIIME2导入数据-fq数据转换成qza数据-使用方法心得

    启动QIIME2运行环境 conda activate qiime2-2019.4 ###新建并定位设置到存在fq数据的文件夹 mkdir qiime2-importing-tutorial ##建立 ...

  7. python 读取excel太慢_实用技巧——Python实现从Excel读取数据并绘制成图像

    喜欢编程,热爱分享,希望能结交更多志同道合的朋友,一起在学习Python的道路上走得更远! 本文主要阐述如何使用python从excel读取数据,并用matplotlib绘制成二维图像. 主要知识点为 ...

  8. 实用技巧——Python实现从Excel读取数据并绘制成图像

    本文主要阐述如何使用python从excel读取数据,并用matplotlib绘制成二维图像. 主要知识点为: 使用xlrd扩展包读取excel数据 使用matplotlib绘制二维图像 美化图像,添 ...

  9. python文件转换php,php文件怎么转成mp3

    在格式的转换上,直接是amr的模式是无法让我们播放的,还需要进行mp3模式的转换.根据不同的php代码将amr格式记录转换为mp3格式,下面我们就来看看转换的方法吧. 2.静态版本包可在linux下载 ...

  10. python爬取天眼查数据(未破解图片验证及ajax版)

    import time import requests from bs4 import BeautifulSoup import lxml import json import copy import ...

最新文章

  1. 2022-2028年中国铁路信息化建设投资分析及前景预测报告
  2. UTA研究团队提出首个3D点云+GAN新方法,让机器人“眼神”更犀利 | AI日报
  3. Hugo快速搭建Blog
  4. [POI2005]BAN-Bank Notes
  5. 游戏线程池的设计0-转自
  6. 《xUnit Test Patterns》学习笔记2 - Goal Of Test Automation
  7. python gui下载进度条_对python GUI实现完美进度条的示例详解
  8. 「力扣」509. 斐波那契数【动态规划】详解!
  9. 经过 8 万画作+人工注释训练,算法学会了赏析名画
  10. mysql sql 字符串拼接_深入讲解SQL中的字符串拼接
  11. python——txt文本处理
  12. GIF微信表情如何制作
  13. ANSYS FLUENT——最基本操作(以一个简单的案例为例)
  14. 解决 WKWebView goback执行无效的bug
  15. 网页底部固定版权信息
  16. 大连市金州区石河计算机学校,2021大连市金州区安全教育平台登录入口网址【最新】...
  17. 烤仔观察 | 秋天的第一口“菠萝”真的那么好吃吗?
  18. HTTP 与 HTTPS 的理解
  19. cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies
  20. Flutter学习总纲教程

热门文章

  1. 前端实现动画的7种方式
  2. 安装postgreSQL出现configure:error:readline library not found解决方法及pg安装全过程
  3. 8种妙招,公众号实现吸粉引流
  4. OpenCV——常用函数
  5. Json格式乱码处理方式
  6. 数据库自定义聚合函数(求和、标准差、平均值、几何平均值、几何标准差、偏度系数、峰度系数)
  7. 超震惊!!微软产品经理每天的工作内容竟然是这个...
  8. 机器人读懂人心的九大模型
  9. 一线工程师告诉你嵌入式真实现状与发展前景
  10. 微信小程序应用百度地图API