日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

用python将照片做成数据集_python实战项目,struct模块的使用,将MNIST数据集转换为bmp图片...

發布時間:2024/1/8 python 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 用python将照片做成数据集_python实战项目,struct模块的使用,将MNIST数据集转换为bmp图片... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

最近學習 tensroflow,用到了入門級的經典數據集 MNIST,MNIST 包含幾萬張 28x28 像素大小的手寫數字。但是它的存儲是以字節流的形式存儲的,幾萬張圖片存儲在一個文件里。一直對其很好奇,本節即用 python 的 struct 模塊處理字節流信息,結合 python 的 Image 模塊,將 MNIST 中的手寫數字圖片提取出來。

MNIST 圖片集的格式

要想從 MNIST 中提取出圖片數據,首先要了解它的格式。這點其實官網介紹的非常清楚。這里把介紹圖片格式的部分截取下來,因為測試集的數據量稍小(格式與訓練集相同),所以我們以測試集為例:

可以看出起始 32bit 是數據集的魔法數,校驗用的,可以不管。

4 字節偏移處是圖片的總數目 10000。

8 字節偏移處是圖片的行,為 28。

12 字節偏移處是圖片的列,也為 28。

從 16 字節開始,每一字節都是像素值。

像素值按行排列,從 0-255,0 表示白色,255 表示黑色,中間值是灰色。所以第一張圖片的數據,是從數據集的第 16 字節開始的,到 16+28x28 結束。

python struct 模塊

python 的 struct 模塊主要用于處理字節流信息,最重要的三個函數是pack(), unpack(), calcsize()。pack(fmt, v1, v2, ...) 把數據封裝成字符串

unpack(fmt, string) 按照 fmt 解析字節流string,返回解析出來的數據

calcsize(fmt) 返回(fmt)占用多少字節數

fmt 可為:

使用方法是放在fmt的第一個位置,就像'@5s6sif'。圖出自:嘎啦。

python 的 struct 模塊彌補了 python 處理底層字節流信息不方便的不足。什么是字節流信息呢?比如 TCP 傳來一段 C 結構體形式的數據:

用 python 程序接收,接收到的其實就是一段二進制數字,python 沒有辦法很方便的使用 c 的結構體來解析這些數據,這時 struct 模塊就派上用場了。

使用 python 的 struct 模塊,提取出 MNIST 中的圖片,并保存為 bmp 格式

這里還是以數據量較小的測試集為例。首先,我們把數據集讀入內存:

然后,讀出數據集的頭信息,

接著,就可以讀出 28x28=784 字節的圖片數據了。

得到數據后,使用 python 的 Image 模塊,就可以很輕松的把數據保存為 bmp 圖片了。

運行之,在 images 文件夾里得到了 1.bmp 文件,打開,發現是期望的手寫數字。

接下來,加個 for 循環,就可以把全部圖片提取出來了,完整代碼如下:

運行之,發現 10000 張測試集的圖片已經全部被我們提取并保存為 bmp 圖片了。

總結

以上是生活随笔為你收集整理的用python将照片做成数据集_python实战项目,struct模块的使用,将MNIST数据集转换为bmp图片...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。