图片尺寸批量resize的matlab并行代码

本文介绍了如何使用MATLAB的并行机制来批量调整图片尺寸,以解决大量图片处理时的效率问题。在ILSVRC2012数据集的例子中,通过对比shell脚本,提出MATLAB并行代码,可以根据CPU核心数设置并发任务。代码示例中设置了CoreNum为6,对于拥有多个物理CPU和核心的系统,是否能进一步提升效率至CoreNum=12成为疑问。同时,文章提供了在Linux中查看CPU信息的命令,以帮助确定可用核心数。
摘要由CSDN通过智能技术生成

在caffe ImageNet例子中有对图片进行resize的部分,文中使用的是linux shell脚本命令:

for name in /path/to/imagenet/val/*.JPEG; do
    convert -resize 256x256\! $name $name
done

但该命令在运行后光标就一直处于等待状态,直到所有的图片全部运行结束。这种情况在图片数量比较大时就很恼人(对于ILSVRC2012数据集中的100多万张图片来说,这种状态可能会持续好几天),你不知道程序的运行状况,不知道处理了多少图片,不知道程序大概什么时候能结束。

因此,本文采用matlab语言中的并行机制来实现图片尺寸的批量resize。
代码如下:

clear;clc;close all;
tic;            % 用于计算程序运行时间,和toc搭配使用
CoreNum=6;      % cpu核的数量
YOLOv5是一个流行的物体检测模型,其txt文件通常包含预处理后的标注信息,包括图片路径、类别以及坐标。如果你想批量调整这些图片的大小,特别是在使用YOLOv5的训练前准备过程中,你可以使用Python库如`PIL`(Pillow)来实现。 这是一个简单的例子,假设你有一个包含图片路径和对应标签的txt文件(每行一条记录,格式通常是 `image_path class x y w h`),你可以按如下步骤操作: ```python from PIL import Image def resize_images_and_labels(input_txt, output_txt, size): with open(input_txt, 'r') as in_file, open(output_txt, 'w') as out_file: for line in in_file: img_path, class_name, *coords = line.strip().split(' ') # 加载原始图片 img = Image.open(img_path) # 使用给定尺寸进行resize resized_img = img.resize(size) # 保存resize后的图片 resized_img.save(resized_img_path, format='JPEG') # 更新txt文件中的坐标,这里只是一个简化示例,实际需要计算缩放比例后更新坐标 new_coords = (int(coords[0] * size[0]), int(coords[1] * size[1]), int(coords[2] * size[0]), int(coords[3] * size[1])) # 写入新坐标到输出txt out_file.write(f"{resized_img_path} {class_name} {' '.join(str(c) for c in new_coords)}\n") # 使用时设置输入输出文件名和期望的图片大小,比如 (640, 640) resize_images_and_labels('input.txt', 'output.txt', (640, 640)) ``` 注意这只是一个基本的示例,实际应用中可能还需要更复杂的错误处理和坐标计算,因为缩放会改变原图的比例,所以直接乘以目标尺寸可能会导致坐标偏移。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值