matlab保存不带白边图片
时间: 2023-11-28 22:45:43 浏览: 1151
以下是在MATLAB中保存不带白边的图片的方法:
1.使用`print`函数保存图片时,设置`-r0`选项可以去掉白边。例如:
```matlab
print('filename.png', '-dpng', '-r0')
```
2.使用`export_fig`工具箱可以更方便地保存不带白边的图片。首先需要下载并添加`export_fig`到MATLAB路径中,然后使用以下代码保存图片:
```matlab
export_fig('filename.png', '-png', '-transparent', '-nocrop')
```
其中,`'-transparent'`选项可以使背景透明,`'-nocrop'`选项可以去掉白边。
相关问题
matlab保存图片去除白边
在MATLAB中,当你想要保存图片并去除白边时,可以使用`imcrop`函数来裁剪掉多余的空白区域。以下是一个简单的步骤:
1. 首先,确保你有一个包含图像数据的变量,比如`img`。
2. 使用`imcrop`函数,传入图像和你希望裁剪的边界。这个函数接受两个参数:原始图像和一个新的矩形框,该矩形框的左上角坐标和尺寸表示了要去除白边的部分。例如,如果你确定白边是从图像的顶部和左侧开始,你可以这样操作:
```matlab
cropped_img = imcrop(img, [0 0 白边宽度 白边高度]);
```
其中,`[0 0]`表示从原图左上角开始裁剪,`白边宽度`和`白边高度`是你观察到的实际白边宽度。
3. 裁剪后,使用`saveas`函数将结果保存为新的图片文件:
```matlab
saveas(cropped_img, '裁剪后的图片名称.jpg', 'jpg');
```
4. 如果不确定白边的具体位置,你可以尝试使用一些边缘检测算法(如Sobel算子、Canny边缘检测等)来自动找出边界,然后基于检测出的边缘进行裁剪。
matlab保存图片有白边
### 解决Matlab保存图片时出现白边的方法
在Matlab中保存无白边的图片可以通过多种方法实现。以下是几种有效的方式:
#### 方法一:使用 `export_fig` 函数
安装并加载 `export_fig` 工具箱后,可以直接调用此函数来保存高质量且无白边的图形文件。
```matlab
% 安装 export_fig (如果尚未安装)
!git clone https://github.com/altmany/export_fig.git ~/+export_fig
addpath(fullfile(matlabroot,'toolbox','local'))
addpath(genpath('~/+export_fig'))
% 使用 example figure
figure;
surf(peaks);
shading interp;
% 调用 export_fig 保存图像到当前目录下的 test.png 文件中
export_fig('test.png','-png')
```
这种方法通常能很好地去除默认边界,并提供更多的自定义选项[^1]。
#### 方法二:调整坐标轴位置属性
对于大多数绘图命令(如 `plot`, `scatter`),只需简单地修改当前坐标区的位置即可消除多余的边缘空间。
```matlab
fig = figure; % 创建一个新的Figure窗口
ax = axes(fig); % 获取Axes对象句柄
plot(ax, randn(10), 'o-'); % 绘制一些随机数据点作为例子
set(ax, 'Position', [0 0 1 1]); % 设置Axes占据整个Figure区域
print('-dpng','-r300','no_margin_plot.png') ; % 打印成PNG格式高分辨率图像
```
通过上述代码片段中的最后一行指令可以指定输出设备类型以及目标文件名;这里选择了 PNG 格式的位图文件,并设置了分辨率为每英寸300像素以获得更好的质量效果[^3]。
#### 方法三:针对特定显示方式做出相应调整
当涉及到像 `imshow()` 这样的特殊展示形式时,则可能还需要额外考虑其他因素才能彻底移除不必要的留白部分。
```matlab
img = imread('peppers.png');
figure;
hAx = imshow(img);
% 将 axis 改为 normal 来取消固定纵横比约束,
% 并允许图像自动拉伸填满整个 Figure 窗口。
axis(hAx.Parent, 'normal');
% 移动 Axes 到最左上角并将宽度高度设为最大值,
% 即让其完全覆盖住整个 Figure 的可视范围.
set(hAx.Parent, ...
'Units', 'normalized',...
'OuterPosition',[0 0 1 1],...
'TightInset' , get(hAx.Parent,'TightInset'));
% 更新 Position 属性使实际内容紧贴四周边缘
pos = hAx.Parent.Position - [...
hAx.Parent.TightInset,...
[0,hAx.Parent.TightInset(2:end)]];
pos(pos<0)=0;% 避免负数情况发生
set(hAx.Parent,'Position', pos)
% 导出最终结果至磁盘文件系统内
print(gcf, '-dpng','-r300','tight_image_output.png');
```
这段脚本首先读取一幅测试用彩色图像,接着创建了一个新的Figure实例用于呈现该图像,在这之后便依次执行了一系列操作——从改变Axis模式直到精确控制各个方向上的间距参数,从而确保所得到的结果尽可能贴近预期形态.
阅读全文