Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何通过Matlab warp的曲面贴图输出导出图?_Matlab_Matlab Figure - Fatal编程技术网

如何通过Matlab warp的曲面贴图输出导出图?

如何通过Matlab warp的曲面贴图输出导出图?,matlab,matlab-figure,Matlab,Matlab Figure,扭曲对象位于极坐标中,我无法使用轴指定该极坐标,因此我无法将曲面对象直接传递到export\u fig。 生成图像的代码,但我无法捕捉到它,因为它没有句柄,所以导出图,如下所示 clear all; close all; clc; img=imread('peppers.png'); % http://stackoverflow.com/a/7586650/54964 [h,w,~] = size(img); s = min(h,w)/2; [rho,theta] = meshgrid(li

扭曲对象位于极坐标中,我无法使用
轴指定该极坐标,因此我无法将曲面对象直接传递到
export\u fig
生成图像的代码,但我无法捕捉到它,因为它没有句柄,所以导出图
,如下所示

clear all; close all; clc; 
img=imread('peppers.png'); 
% http://stackoverflow.com/a/7586650/54964
[h,w,~] = size(img);
s = min(h,w)/2;
[rho,theta] = meshgrid(linspace(0,s-1,s), linspace(0,2*pi,s));
[x,y] = pol2cart(theta, rho);
z = zeros(size(x));
figure;
h=warp(x, y, z, img); 
view(2), axis square tight off
export\u fig
接受图形和语法处理程序,但不接受曲面映射,因此我无法将
h
传递给函数

% https://github.com/altmany/export_fig
export_fig(figure_handle, filename);
export_fig(axes_handle, filename);
建议失败的示例代码
全部清除;全部关闭;clc;
fp=图();
hax_极轴=轴(fp);
f_do_not_touch=图形(“名称”、“请勿触摸”);
指数=0;
I=imread('peppers.png');
而指数<7
[x,y,z]=makePolar(I);
h=翘曲(x,y,z,I);
视图(2),轴方形紧密关闭
%
[Ip,alpha]=导出图('/home/masi/Images/masi','-png','-native','-q101','-a1','-m1','-RGB','-nofontswap','-transparent','-dpng'。。。
哈克斯(波兰);
p=快速峰值风(Ip);%https://se.mathworks.com/matlabcentral/fileexchange/37388-fast-2d-peak-finder
imagesc(hax_polar,Ip);等等
图(hax_极坐标,p(1:2:end),p(2:2:end),r+)
拖延
指数=指数+1;
结束
函数[x,y,z]=makePolar(img)
% http://stackoverflow.com/a/7586650/54964
[h,w,~]=尺寸(img);
s=最小(h,w)/2;
[rho,theta]=meshgrid(linspace(0,s-1,s),linspace(0,2*pi,s));
[x,y]=pol2cart(θ,ρ);
z=零(尺寸(x));
结束
图1输出图
不接触
获取内容,主图因隐式声明而中断

Matlab:2016a

操作系统:Debian 8.5 64位

有几个问题,如果我们解决了它们,就会得到您所期望的结果

  • 由于
    warp
    不接受
    'Parent'
    属性,因此需要确保要显示它的
    轴是当前轴。您可以使用
    功能强制执行此操作,并将轴手柄传递给它

    axes(hax_polar)
    h = warp(x, y, z, I);
    
    % Explicitly modify this axes
    view(hax_polar, 2)
    axis(hax_polar, 'square')
    axis(hax_polar, 'tight')
    axis(hax_polar, 'off')
    
  • 调用
    imagesc
    plot
    时,使用
    'Parent'
    属性值对(而不是将父属性指定为第一个输入)更为清晰(跨系统工作更为可靠)

    imagesc(Ip, 'Parent', hax_polar);
    plot(p(1:2:end), p(2:2:end), 'r+', 'Parent', hax_polar);
    hold(hax_polar, 'off')
    
  • 一旦我们解决了所有这些问题,我们就会得到一个看起来正确的图像

    全部清除;全部关闭;clc;
    fp=图();
    hax_极轴=轴('父',fp);
    f_do_not_touch=图形(“名称”、“请勿触摸”);
    指数=0;
    I=imread('peppers.png');
    而指数<7
    [x,y,z]=makePolar(I);
    轴(hax_极轴)
    h=翘曲(x,y,z,I);
    %不同的
    视图(hax_polar,2);
    轴(hax_极轴,'正方形')
    轴(hax_极轴,“紧”)
    轴(hax_极轴,“关闭”)
    %
    [Ip,alpha]=导出图('test.png'、'-png'、'-native'、'-q101'、'-a1'、'-m1'、'-RGB'、'-nofontswap'、'-transparent'、'-dpng'、。。。
    哈克斯(波兰);
    p=快速峰值风(Ip);%https://se.mathworks.com/matlabcentral/fileexchange/37388-fast-2d-peak-finder
    imagesc(Ip,‘父’,hax_polar);等等
    曲线图(p(1:2:end)、p(2:2:end)、‘r+’、‘Parent’、hax_polar)
    保持(hax_极轴“关闭”)
    指数=指数+1;
    结束
    函数[x,y,z]=makePolar(img)
    % http://stackoverflow.com/a/7586650/54964
    [h,w,~]=尺寸(img);
    s=最小(h,w)/2;
    [rho,theta]=meshgrid(linspace(0,s-1,s),linspace(0,2*pi,s));
    [x,y]=pol2cart(θ,ρ);
    z=零(尺寸(x));
    
    有几个问题,如果我们解决了它们,就会得到您所期望的结果

  • 由于
    warp
    不接受
    'Parent'
    属性,因此需要确保要显示它的
    轴是当前轴。您可以使用
    功能强制执行此操作,并将轴手柄传递给它

    axes(hax_polar)
    h = warp(x, y, z, I);
    
    % Explicitly modify this axes
    view(hax_polar, 2)
    axis(hax_polar, 'square')
    axis(hax_polar, 'tight')
    axis(hax_polar, 'off')
    
  • 调用
    imagesc
    plot
    时,使用
    'Parent'
    属性值对(而不是将父属性指定为第一个输入)更为清晰(跨系统工作更为可靠)

    imagesc(Ip, 'Parent', hax_polar);
    plot(p(1:2:end), p(2:2:end), 'r+', 'Parent', hax_polar);
    hold(hax_polar, 'off')
    
  • 一旦我们解决了所有这些问题,我们就会得到一个看起来正确的图像

    全部清除;全部关闭;clc;
    fp=图();
    hax_极轴=轴('父',fp);
    f_do_not_touch=图形(“名称”、“请勿触摸”);
    指数=0;
    I=imread('peppers.png');
    而指数<7
    [x,y,z]=makePolar(I);
    轴(hax_极轴)
    h=翘曲(x,y,z,I);
    %不同的
    视图(hax_polar,2);
    轴(hax_极轴,'正方形')
    轴(hax_极轴,“紧”)
    轴(hax_极轴,“关闭”)
    %
    [Ip,alpha]=导出图('test.png'、'-png'、'-native'、'-q101'、'-a1'、'-m1'、'-RGB'、'-nofontswap'、'-transparent'、'-dpng'、。。。
    哈克斯(波兰);
    p=快速峰值风(Ip);%https://se.mathworks.com/matlabcentral/fileexchange/37388-fast-2d-peak-finder
    imagesc(Ip,‘父’,hax_polar);等等
    曲线图(p(1:2:end)、p(2:2:end)、‘r+’、‘Parent’、hax_polar)
    保持(hax_极轴“关闭”)
    指数=指数+1;
    结束
    函数[x,y,z]=makePolar(img)
    % http://stackoverflow.com/a/7586650/54964
    [h,w,~]=尺寸(img);
    s=最小(h,w)/2;
    [rho,theta]=meshgrid(linspace(0,s-1,s),linspace(0,2*pi,s));
    [x,y]=pol2cart(θ,ρ);
    z=零(尺寸(x));
    
    请考虑添加一个。这意味着直接复制粘贴将运行代码。这很重要,因为你正在做非常具体的事情,我们不能仅仅猜测,我们可能会错过你的错误。另外,
    export\u fig
    与任何事情都有什么关系?警告出现在
    曲面中
    图像生成效果非常好<代码中不存在代码>图形句柄
    文件名
    ,因此它会出错。这就是我的意思。这有关系吗?如果我做
    figure\u handle=figure;h=翘曲(x,y,z,img);视图(2),轴方形紧密关闭;filename='whatevers.png'导出图(图\u句柄,文件名)它还使用<代码> HYAX= GET(H,'Prime')< /Cord>获取包含该表面的轴的句柄,然后通过<代码> HYAX到ExpX.PPLASE,请考虑添加一个。这意味着直接复制粘贴将运行代码。这很重要,因为你每天都在做非常具体的事情