如何用MATLAB保存处理后的图片且不改变图片大小
时间: 2023-06-03 16:06:09 浏览: 1205
您好!关于您的问题,可以使用MATLAB中的imwrite函数保存处理后的图片,该函数可以指定保存图片的格式和质量参数,并且不会改变图片大小。具体用法如下:
imwrite(img, filename, format, 'Quality', quality)
其中,img为要保存的图片矩阵,filename为要保存的文件名,format为要保存的图片格式(如'png'、'jpeg'等),quality为保存图片的质量参数,一般可以设置为100以获取最高质量。
例如,保存为JPG格式并保留100%质量的代码如下:
imwrite(img, 'result.jpg', 'jpg', 'Quality', 100)
希望能帮到您!
相关问题
matlab改变paint输出图片大小
### 修改Matlab中`paint`函数生成图像的尺寸
为了调整通过`imagesc`创建并显示的地图(即`paint`对象)所对应的图形窗口或保存文件的大小,可以利用MATLAB内置属性和命令来实现这一目标。具体方法涉及设置当前图窗(figure window)的纸张位置(PaperPosition)、宽度(Width)及高度(Height),或者直接指定输出图像分辨率。
对于给定的例子,可以通过以下方式控制最终渲染出来的图像尺寸:
```matlab
function set_paint_size(M, a, b, width, height)
% 创建椭圆形图案矩阵
map = zeros(M);
for x = 1:M
for y = 1:M
if (((x-round(M/2))^2 * b^2 + (y-round(M/2))^2 * a^2) <= a^2 * b^2)
map(y, x) = 100;
end
end
end
% 使用 imagesc 显示地图数据
hFig = figure('Visible', 'off'); % 新建隐藏状态下的图形窗口
hAx = axes(hFig);
% 设置绘图区域比例以匹配所需的宽高比
set(hAx,'DataAspectRatio',[width/height 1 1]);
hold on;
% 绘制图像
paint = imagesc(map);
colormap(gray); % 应用灰度颜色映射表
axis equal tight; % 调整坐标轴范围至紧贴数据边界,并保持纵横比一致
% 设定输出图片的具体参数
print('-dpng','-r300',['output_' num2str(width) '_' num2str(height) '.png'], ...
'-F:width=' num2str(width), '-F:height=' num2str(height));
close(hFig); % 关闭临时使用的图形窗口
```
上述代码片段定义了一个名为`set_paint_size`的新函数,它接受五个输入参数:M、a、b分别对应原始代码中的变量;新增加的两个参数分别是期望输出图像的宽度(`width`)和高度(`height`)。此函数内部调用了原版逻辑构建了椭圆形状的数据集,并在此基础上进行了必要的配置以便能够按照指定尺寸导出PNG格式的结果文件[^1]。
值得注意的是,在实际操作过程中可能还需要考虑其他因素如DPI(每英寸点数)等影响最终视觉效果的因素。此外,如果希望在屏幕上查看具有特定物理尺寸的图表,则应该相应地调整Figure Window本身的Units属性及其Position属性值。
matlab 批量保存图片
### 批量保存图片的方法
为了实现批量处理并保存图像,在 MATLAB 中可以编写脚本来循环读取文件夹中的所有图像,执行所需的操作(如调整大小),然后再将其保存到指定位置。下面提供了一个具体的例子说明如何完成这一操作[^1]。
```matlab
% 定义输入和输出路径
inputPath = 'C:\path\to\your\images';
outputPath = 'C:\desired\save\location';
% 获取目录下所有的jpg文件名列表
filePattern = fullfile(inputPath, '*.jpg');
allFiles = dir(filePattern);
for k = 1:length(allFiles)
baseFileName = allFiles(k).name;
fullInputFilespec = fullfile(inputPath, baseFileName);
% 读入当前迭代的图像
originalImage = imread(fullInputFilespec);
% 对图像进行必要的预处理(这里假设不做任何改变直接保存)
processedImage = imresize(originalImage, [224 224]);
% 构造新的文件名称以及完整的输出路径
[~, name, ~] = fileparts(baseFileName);
outputBaseFileName = sprintf('%s_resized.jpg', name);
fullOutputFilespec = fullfile(outputPath, outputBaseFileName);
% 将修改后的图像写入磁盘
imwrite(processedImage, fullOutputFilespec);
end
```
上述代码片段展示了怎样遍历特定文件夹内的 `.jpg` 文件,并通过 `imread()` 函数加载每张图片;接着利用 `imresize()` 方法调整尺寸至 `[224 224]` 像素大小作为示范性的处理步骤;最后借助 `imwrite()` 把经过变换的新图存回另一处设定好的存储地址中去。
阅读全文
相关推荐















