• 回答数

    4

  • 浏览数

    2605

  • 收藏数

    0

作者:怒默语晨 发表于 2018-11-20 11:09:05
跳转到指定楼层
我要做的事:根绝数据包画出的一张11470*2820的图片,对其进行分割,分割成164*20的多个小图片,然后画出来按顺序保存小图片,以建立图片数据库。用我的普通电脑win10的x64位系统安装的matlab2014a读数据包画图并按照顺序保存到指定路径,运行过程中所画的图正确,保存到路径的图打开看也是正确的。
问题是:用带GPU处理器的电脑(64位win7系统安装的matlab2014a,也就是两台电脑只差一个GPU)运行同一个程序,同一个.mat文件,运行时画出来的图和上面那台电脑一样,但是保存到路径的图片就是一片蓝。所有图片都是一个样子。
自己排错过程:猜想1:也许是带GPU的电脑运行速度太快,而保存图片需要一定时间,所以保存的没扫描好。但是加了一个延时程序pause(3),运行出图慢了,但是保存的依旧是全部是一样的结果。
猜想二:也许和保存指令有关系,用imwrite保存的图长的一样,但是改成saveas保存就正确,保存的都和当时运行出现的图一样。


我的代码如下:

clear;clc;
load test.mat      %文件太大,传不上去,但是我觉得不运行也一样的,因为普通电脑电脑运行都是相同的结果,保存的图片都是正确的
                         %主要是i想知道为什么带GPU的电脑运行的结果图片是对的,但是保存的就是全蓝呢,怀疑是全部保存的一张图片

E_mat=E(1:11316,1:2820);
seg1=164*ones(69,1);
seg2=20*ones(1,141);
E_cell=mat2cell(E_mat,seg1,seg2);

p=1;
for i=1:10
    for j=1:6
        A=E_cell{i,j};
        [ig_r,ig_c]=size(A);
        tt = 1:ig_c;
        yy = 1:ig_r;  
        figure(3);
        set(gcf, 'position', [0 0 1000 500]);        %set命令调整坐标属性
        set(imagesc(tt,yy,A),'alphadata',~isnan(A));
        len = floor((length(tt)-1)/4);
        set(gca,'xtick',[tt(1),tt(1+len),tt(1+2*len),tt(1+3*len),tt(1+4*len)]);
        axis xy;
        colorbar;
        caxis([-30,20]);
        f=getframe;  %getframe获得的是一个架构struct类型的数据
        imwrite(f.cdata,['F:\zqm\test_picture\','test_',num2str(p),'.bmp'])  
%         saveas(gcf,['F:\zqm\test_picture\','test_',num2str(p),'.bmp'])
        p=p+1;
    end
end


运行结果:
带gpu电脑:左下角是运行过程中画出来的图片,现在显示的是最后一张的结果,右上角是保存路径中图片的结果(图一)

正常普通电脑:左下角运行过程图片,左上角保存路径文件夹图片(图二)


想知道,为什么GPU的电脑就保存不正确图

分享:
回复

使用道具

该用户从未签到

新手上路

Rank: 1

积分
34
极客币
79
主题
10
帖子
34
注册时间
2018-10-23
在线时间
1 小时
性别
保密
发表于 2018-11-20 11:09:21 | 显示全部楼层
把两台电脑的桌面分辨率调成一样试试
回复

使用道具 举报

该用户从未签到

新手上路

Rank: 1

积分
36
极客币
83
主题
10
帖子
39
注册时间
2018-10-23
在线时间
1 小时
性别
保密
 楼主| 发表于 2018-11-20 11:09:37 | 显示全部楼层
狩猎少女 发表于 2018-11-20 11:09
把两台电脑的桌面分辨率调成一样试试

两台电脑的屏幕分辨率一样的,而且这两台电脑运行程序画出来的图是一样的,只是保存到路径的不一样。
回复

使用道具 举报

该用户从未签到

新手上路

Rank: 1

积分
34
极客币
79
主题
10
帖子
34
注册时间
2018-10-23
在线时间
1 小时
性别
保密
发表于 2018-11-20 11:09:51 | 显示全部楼层
怒默语晨 发表于 2018-11-20 11:09
两台电脑的屏幕分辨率一样的,而且这两台电脑运行程序画出来的图是一样的,只是保存到路径的不一样。
...

那就没遇到过了。。。不造。。。
或者你可以禁用独立显卡试试?
回复

使用道具 举报

该用户从未签到

新手上路

Rank: 1

积分
36
极客币
83
主题
10
帖子
39
注册时间
2018-10-23
在线时间
1 小时
性别
保密
 楼主| 发表于 2018-11-20 11:10:46 | 显示全部楼层
回复

使用道具 举报

高级模式 评论
您需要登录后才可以回帖 登录 | 立即注册 微信登录