MATLAB imwrite 错误:数据类型应为 numeric 或 logical,但实际类型为 matlab.ui.Figure在 MATLAB 中使用 imwrite 函数保存图像时,可能会遇到以下错误信息:> 错误使用 imwrite (line 427)/> DATA 应为以下类型之一:/> numeric, logical/> 但其类型是 matlab.ui.Figure。这是因为 imwrite 函数需要的是数值型或逻辑型的数据,而不是 matlab.ui.Figure 类型的对象,后者代表的是整个图形窗口。### 解决方法要解决这个问题,您需要在使用 imwrite 函数之前获取要保存的图像数据。以下是您可以尝试的修改示例代码:matlab% 创建一个新的图形窗口figure;for k = 7:len k_mod = mod(k-7, numColors) + 1; % 计算颜色索引 boundary = B{k}; plot(boundary(:,2), boundary(:,1), colors{k_mod}, 'LineWidth', 2); ymax = ymaxXmaxArray(k, 1); xmax = ymaxXmaxArray(k, 2); % 绘制水平线 plot([1, size(image, 2)], [ymax, ymax], 'b--', 'LineWidth', 1); % 绘制垂直线 plot([xmax, xmax], [1, size(image, 1)], 'g--', 'LineWidth', 1); plot(xmax, ymax, 'g+', 'MarkerSize', 10); hold on;endhold off;% 获取当前图像数据currentFig = gcf;frame = getframe(currentFig);imgData = frame.cdata;% 保存图像imwrite(imgData, 'path/to/save/image.png');**代码解释:1. getframe 函数: 我们使用 getframe 函数获取当前图形窗口 (currentFig) 的图像数据,并将其存储在 frame 变量中。2. frame.cdata: frame 变量是一个结构体,其中 cdata 字段包含了图像的像素数据。3. imwrite 函数: 我们使用 imwrite 函数将图像数据 (imgData) 保存为 PNG 格式的图片。请注意:'path/to/save/image.png' 替换为您要保存图片的实际路径和文件名。 您可以根据需要更改保存的图像格式,例如 JPEG (.jpg) 或 BMP (.bmp)。希望这次修改能够解决问题。如有其他疑问,请随时提问。

MATLAB imwrite 错误:数据类型应为 numeric 或 logical,但实际类型为 matlab.ui.Figure

原文地址: https://www.cveoy.top/t/topic/Sbm 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录