MATLAB中figure背景为黑,但保存出的图片背景却为白

在MATLAB中,作者尝试将figure背景设为黑色以制作视频,但发现保存的jpg图片背景仍为白色。通过尝试多种方法,如更改输出格式、设置图像复制模板和axes颜色,最后通过在figure的导出设置中调整渲染颜色成功解决问题。现在回顾,作者认为使用Python进行图片合成视频可能更优,但当时仅熟悉C语言,并提供了C实现的opencv代码片段。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

背景

最近需要做一段视频来展示算法的迭代过程,思路是将Matlab代码迭代过程中的结果保存为figure格式并输出为jpg图像,再用C++代码将图片合成为视频。

问题

为了做出炫酷的效果,希望图片背景是黑色的。尽管已经将figure的背景设置为黑色,但保存出的jpg图片背景依然为白色。

解决方案

搜索到的方法如下,最后一个方案成功了:

  • 输出图像格式改为PNG(有点扯了);
  • 在figure窗口中,文件 -> 预设 -> 图像复制模板 -> 复制选项 -> 图形背景颜色 -> 使用图形颜色;
  • 设置axes的颜色为黑 -> set(gca,‘color’,‘k’);
  • 在figure窗口中,文件 -> 导出设置 -> 渲染 -> 自定义颜色 -> k -> 应用于图形(只需设置一次)。

现在看来用python来将图片合成为视频是更好的选择,但是三年前只会C。

附上用C实现的图片合成视频代码(需要安装opencv):

#include<opencv2/opencv.hpp>
#include<iostream>

using namespace std;
using namespace cv;

void pic2video(int m);
//核心函数 VideoWriter
int main(
### MATLAB 中将图像背景设置为色 在 MATLAB 中,可以通过多种方式来确保生成的图像具有色的背景。以下是几种常见方法: #### 方法一:直接修改 Figure 的属性 可以先创建一个 figure 对象并将其 Color 属性设置为 'w' 表示色[^2]。 ```matlab fig = figure('Color','w'); ``` 这会使得整个绘图窗口的背景变为色。当保存figure 时,默认情况下其背景也会保持一致的颜色。 #### 方法二:针对具体绘制命令调整参数 对于 `imagesc` 函数来说,除了改变全局 figure 背景外还可以单独控制所展示数据区域内的空处颜色。例如,在显示含有 NaN 或 Inf 数据点的地图时,可以让这些特殊位置呈现为纯而不影响其它正常数值的表现形式[^3]。 ```matlab C = rand(10,10); % 创建随机测试矩阵 C(randperm(numel(C),5))=NaN; % 随机置入一些 NaN 值作为示范 h = imagesc(C); set(h,'AlphaData',~isnan(C)); % 设置 AlphaData 来定义透明度 colormap(gray) % 使用灰度调色板以便更好地观察效果 axis equal tight % 自动适应坐标轴范围使画面紧凑美观 colorbar % 添加色彩条辅助理解不同亮度对应的实际值大小 ``` 上述代码片段展示了如何利用 alpha 渠道让指定条件下的像素变得不可见(即表现为页面底色),这里假设底色已经被设成了色,则那些被标记为透明的地方自然也就呈现色了。 #### 方法三:保存图形前进一步定制化输选项 有时即使设置了正确的内部样式但在最终导阶段仍然得不到预期的结果。这时可以在 saveas() 或者 export_fig 等工具里加入额外指令以强制覆盖默认行为,保证文件内不含多余边框或其他干扰因素[^1]。 ```matlab print(fig,['output_image','.png'],'-dpng','-r300'); % PNG 格式的高质量渲染 % 如果需要 PDF/PS/EPS 类型则可相应替换扩展名以及驱动程序名称 ``` 通过以上三种途径之一或组合应用即可有效地实现在 MATLAB 下制作带有干净背景区别的静态图表。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值