Python 将jpg/png格式图转成mat

要先转读到numpy数组(npy数据)再转mat 。

# -*- coding: utf-8 -*-
"""
jpg2mat
"""
import glob
import os
import numpy as np
from PIL import Image
import scipy.io as io

#src_dir = '123/'
save_dir = 'npy_data/'
#file_list = glob.glob(src_dir+'*.jpg')  # get name list of all .png files    
print('Start...')
# initrialize

img = Image.open('123/223.jpg')
# save to .npy
res = np.array(img, dtype='uint16')
print('Saving data...')
if not os.path.exists(save_dir):
	os.mkdir(save_dir)
np.save(save_dir+'origin.npy', res)
print('Done.')

numpy_file = np.load('npy_data/origin.npy')

io.savemat('origin.mat',{'data':numpy_file})

 

### 将MAT文件中的像转换为JPGPNG并保留标签 为了将存储在MAT文件中的像数据保存为常见的格式(如JPGPNG),同时确保不丢失任何关联的标签信息,可以按照以下方法操作: #### 加载MAT文件 首先,加载包含像及其标签的MAT文件。假设MAT文件中有一个名为`image_data`的变量用于表示像矩阵以及另一个名为`labels`的变量来储存对应的标签。 ```python import scipy.io as sio mat_contents = sio.loadmat('path_to_mat_file.mat') image_data = mat_contents['image_data'] label_info = mat_contents['labels'] # 假设这是标签的信息 ``` #### 处理像数据 接着处理这些像数据以便于后续保存成片文件。如果像是灰度模式,则可以直接将其转换;如果是彩色RGB模式则需做适当调整[^1]。 对于灰度像: ```python gray_image = image_data.astype(np.uint8) # 转换为无符号整型数以适应大多数形库的要求 ``` #### 添加标签至像 为了让最终导出的像能够携带原始标签,在实际应用中通常有两种方式实现这一点——一种是在像旁边附加文字说明或者创建一个多通道像其中一维用来编码额外元数据比如类别标签等特殊标记[^2]。 这里提供一个简单的例子展示如何通过PIL/Pillow库向每张像添加文本描述作为其一部分: ```python from PIL import Image, ImageDraw, ImageFont def add_label_to_img(image_array, label_text): img_pil = Image.fromarray(image_array) draw = ImageDraw.Draw(img_pil) font = ImageFont.truetype("/usr/share/fonts/truetype/freefont/FreeMono.ttf", size=40) text_width, text_height = draw.textsize(label_text, font=font) margin = 10 new_size = (img_pil.width + text_width + margin * 2, max(img_pil.height, text_height)) labeled_img = Image.new(mode='L', size=new_size, color=(255)) # 创建白色背景的新画布 labeled_img.paste(img_pil, box=(margin, int((new_size[1]-text_height)/2))) draw_on_new_canvas = ImageDraw.Draw(labeled_img) draw_on_new_canvas.text(xy=(img_pil.width + margin*2, int((new_size[1]-text_height)/2)), text=label_text, fill="black", font=font) return np.asarray(labeled_img).astype(np.uint8) labeled_gray_image = add_label_to_img(gray_image, str(label_info)) ``` #### 存储带有标签的像 最后一步就是利用Python内置或其他第三方模块(例如OpenCV、matplotlib.pyplot.imshow().savefig() 或者 Pillow 的 save 方法)把经过上述步骤处理后的数组对象存盘为指定类型的静态像文件了。 使用Pillow保存像非常简单直观: ```python final_image = Image.fromarray(labeled_gray_image) final_image.save("output_with_labels.png") # 可更改扩展名以匹配所需的输出格式(.jpg,.png,...) ``` 这样就完成了整个流程:读取MAT文件 -> 提取像与标签 -> 合并二者 -> 输出结果像。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值