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

1、位图-----IplImageBYTE *pt;pt=classify-m_pData;int m_Width = classify-GetWidth();int m_Height = classify-GetHeight();//首先由cvCreateImageHeader()创

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

for name in /path/to/imagenet/val/*.JPEG; do

convert -resize

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

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

代码如下:

clear;clc;close all;

tic;

% 用于计算程序运行时间,和toc搭配使用

CoreNum=matlabpool('size')<=0

matlabpool('open','local',CoreNum);

else

disp('Already initialized');

end

imagePath = 'rastaPlpSpec/train/'; % 图片存放路径

imageFiles = dir(imagePath);

numFiles = length(imageFiles);

= i-2;

disp(j);

imageFile = strcat(imagePath,imageFiles(i).name);

A = imread(imageFile);

B = imresize(A,[256 256]);

% resize为256x256

imwrite(B,imageFile);

% 覆盖原始图片,,若需要另存为,则修改此处的imageFile为新的存储路径

end

matlabpool close % 关闭并行

toc;

% 显示运行时间

在该代码中,因为我的cpu有6个核,所以设置CoreNum=6。

如果我有两个物理cpu,每个有6个核,那么我这里是否可以设置CoreNum=12呢,这样效率会不会成倍提升?由于对matlab的并行处理了解不多,这里就留个疑问,等我知道后再补充,有知道的欢迎交流。

—————————————————————————————————————————————

在linux中关于cpu的相关信息都在文件/proc/cpuinfo中,用户可以直接查看该文件或使用下面的命令显示需要的信息:

1. 显示物理cpu个数

cat /proc/cpuinfo | grep 'physical id' | sort | uniq | wc -l

显示每个物理cpu的核数

cat /proc/cpuinfo | grep 'cpu cores' | uniq

显示逻辑cpu的个数

cat /proc/cpuinfo | grep 'processor' | wc -l

其中:

总核数 = 物理CPU个数 X 每颗物理CPU的核数

总逻辑CPU数 = 物理CPU个数 X 每颗物理CPU的核数 X 超线程数

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值