Python實(shí)現(xiàn)批量將圖像png格式轉(zhuǎn)為npy格式
前言
在進(jìn)行深度學(xué)習(xí)處理時(shí),有些的代碼處理的數(shù)據(jù)格式為npy,但是常常有的數(shù)據(jù)格式為png,因此下面就用Python實(shí)現(xiàn)圖像批量png格式轉(zhuǎn)為npy格式,代碼進(jìn)行了詳細(xì)注釋。
png2npy
# -- coding: UTF-8 --
'''
Author: Clouds rising
Date: December, 2023
QQ: 504156006
'''
import os
import glob
import numpy as np
from PIL import Image
# 要修改的文件夾路徑
input_dir = 'label_png'
# 新文件夾的路徑
output_dir = 'label_npy'
# 創(chuàng)建輸出文件夾
if not os.path.exists(output_dir):
os.makedirs(output_dir)
# 遍歷文件夾中的所有png圖像
for img_path in glob.glob(os.path.join(input_dir, '*.png')):
# 打開原始的png圖像
img = Image.open(img_path)
# 轉(zhuǎn)換圖像
img_8bit = img.convert('L') #參數(shù)L: 8位像素,黑白
# 創(chuàng)建一個(gè)轉(zhuǎn)換表,將灰度值為255的像素點(diǎn)變?yōu)?
'''
在這一行代碼中,創(chuàng)建了一個(gè)包含256個(gè)元素的列表(0到255的灰度值)。該列表的每個(gè)元素都通過條件判斷
0 if i == 255 else i 進(jìn)行賦值。這意味著如果灰度值為255,那么賦值為0,否則保持不變。
這樣就形成了一個(gè)轉(zhuǎn)換表,用于將灰度值為255的像素點(diǎn)變?yōu)?。
'''
invert_table = [0 if i == 255 else i for i in range(256)]
'''
在這一行代碼中,通過point方法應(yīng)用了之前創(chuàng)建的轉(zhuǎn)換表。
這個(gè)方法會(huì)對(duì)圖像中的每個(gè)像素點(diǎn)進(jìn)行變換,根據(jù)轉(zhuǎn)換表將灰度值為255的像素點(diǎn)變?yōu)?,而其他灰度值保持不變。
最終,得到了經(jīng)過反轉(zhuǎn)處理的圖像img_inverted1。
'''
img_inverted1 = img_8bit.point(invert_table, 'L')
# 將圖像對(duì)象轉(zhuǎn)換為NumPy數(shù)組
img_array = np.asarray(img_inverted1)
# 生成與輸入文件相同的輸出文件名
output_filename = os.path.join(output_dir, os.path.basename(img_path).replace('.png', ''))
# 自動(dòng)保存為npy文件
np.save(output_filename, img_array)
方法補(bǔ)充
除了上文的方法,還可以使用Python的Pilow庫(kù)來(lái)讀取和處理圖片,然后使用numpy庫(kù)將圖像數(shù)據(jù)轉(zhuǎn)換為.npy格式。以下是一個(gè)示例代碼:
from PIL import Image
import numpy as np
#讀取PNG圖像
img = Image.open('image.png')
# 轉(zhuǎn)換為RGB格式
img = img.convert('RGB')
# 轉(zhuǎn)換numpy數(shù)組
img_arr = np.array(img)
# 保存為.npy格式
np.save('image.npy', img_arr)在這個(gè)示例中,首先使用Pillow庫(kù)打開PNG圖像,并將其轉(zhuǎn)換為RGB格式。然后,使用numpy庫(kù)將圖像數(shù)據(jù)轉(zhuǎn)換為numpy數(shù)組并保存為.npy格式。你可以將image.png替換為你要轉(zhuǎn)換的PNG圖像文件名,將image.npy替換為你想要保存為的.npy文件名。
相關(guān)問題
到此這篇關(guān)于Python實(shí)現(xiàn)批量將圖像png格式轉(zhuǎn)為npy格式的文章就介紹到這了,更多相關(guān)Python圖像png轉(zhuǎn)npy內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
numpy array找出符合條件的數(shù)并賦值的示例代碼
本文主要介紹了numpy array找出符合條件的數(shù)并賦值的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-05-05
python中split(),?os.path.split()和os.path.splitext()的用法
本文主要介紹了python中split(),?os.path.split()和os.path.splitext()的用法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-02-02
python celery分布式任務(wù)隊(duì)列的使用詳解
這篇文章主要介紹了python celery分布式任務(wù)隊(duì)列的使用詳解,Celery 是一個(gè) 基于python開發(fā)的分布式異步消息任務(wù)隊(duì)列,通過它可以輕松的實(shí)現(xiàn)任務(wù)的異步處理, 如果你的業(yè)務(wù)場(chǎng)景中需要用到異步任務(wù),就可以考慮使用celery,需要的朋友可以參考下2019-07-07
python使用openpyxl庫(kù)修改excel表格數(shù)據(jù)方法
今天小編就為大家分享一篇python使用openpyxl庫(kù)修改excel表格數(shù)據(jù)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧2018-05-05
Python----數(shù)據(jù)預(yù)處理代碼實(shí)例
這篇文章主要介紹了Python數(shù)據(jù)預(yù)處理,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-03-03
python實(shí)現(xiàn)忽略大小寫對(duì)字符串列表排序的方法
這篇文章主要介紹了python實(shí)現(xiàn)忽略大小寫對(duì)字符串列表排序的方法,通過三種不同的方法實(shí)現(xiàn)了對(duì)字符串的排序,是非常實(shí)用的技巧,需要的朋友可以參考下2014-09-09

