作者hwwwh (Jong)
看板MATLAB
标题Re: [问题] 如何将MATLAB中IMSHOW秀出的图变成全萤幕
时间Thu Feb 7 02:42:12 2013
※ 引述《einstein328 (pica)》之铭言:
: ※ 引述《john111 (宅中之霸)》之铭言:
: : 我爬过几篇文章,大大是介绍在SET的POSITION的值设为[0 0 1 1]
: : 但是我还是无法全萤幕,可否请问是否能告知需要再imshow或initSize内改变哪段程式
: : 才能秀出全萤幕的图
: : 谢谢。
: 各位大大你好,
: 爬文後, 知道了 set(gcf,'unit','normalized','position',[0 0 1 1]);
: 可制作成全萤幕,
: 不过我在试了之後, 发现并非是真正的全萤幕, 底下还是会有背景
: 请问各位前辈, 要如何处理..
: 谢谢
不知道後来这系列的全萤幕问题有没有能解决的办法呢?
我现在也遇到一样的问题
我有一个1920x1080解析度的小小萤幕(LCOS)
他会显示我HD大萤幕上所显示的相同东西
也就是说只要我萤幕上看到什麽 小小萤幕就是什麽
所以我希望我MATLAB程式可以精准控制每一个pixel的颜色
目前其他都已经ok
就只剩下我不知道该怎麽让图片「全萤幕显示」
我要的是非常完全的全萤幕 图片以外的所有视窗结构都不要的那种全萤幕显示
例如黑色就是整个萤幕全黑(向电源没开一样是整个黑的)
而不是最上层还有一排(Matlab-..... -口X)之类的视窗
如此才能完整的让我所看到的大萤幕对齐我会使用到的小萤幕
各位前辈有什麽比较好的建议吗
烦请各位闲暇之余能够帮忙解惑
谢谢!
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 1.169.176.168
2F:→ hwwwh:谢谢! 透过java这个方式确实可以全萤幕了! 02/08 22:03
3F:→ hwwwh:但java中的frame能否像figure一样用hold on的方式重复使用? 02/08 22:04
4F:推 CBET:好像没办法... 但要做到 hold on 的效果有一麻烦的方法 02/10 17:57
5F:推 CBET:用 hold on 产生出想要的图後,用 getframe 抓回 matlab 02/10 18:01
6F:→ CBET:再用 frame2im 转成图,再用 java 显示 02/10 18:02
7F:→ CBET:希望有高手能提供更好的作法 02/10 18:03
真是太感谢CBET大了!
但针对我的问题我想先说明一下(贴上主要部分)
screenSize = get(0,'ScreenSize'); %得到全萤幕尺寸
M=zeros(screenSize(4),screenSize(3),3); %我要的矩阵
选择pixel
x=str2double(get(handles.edit2,'string')); %M矩阵的x位置
y=str2double(get(handles.edit3,'string')); %M矩阵的y位置
决定颜色
r=str2double(get(handles.edit1,'string')); %看要多红的颜色就输入多少
g=str2double(get(handles.edit4,'string')); %看要多绿的颜色就输入多少
b=str2double(get(handles.edit5,'string')); %看要多蓝的颜色就输入多少
M(x,y,1)=r;
M(x,y,2)=g;
M(x,y,3)=b;
%这样我的GUI介面上我只要输入一组 x y r g b就会在对应的pixel出现我要的颜色
%再加上CBET大提供的java全萤幕方式即完成我主要的程式码
而关於重复操作的问题,我发现因为我并不是要读真正的「图」,
我要的只是把矩阵M显示出来而已。
於是我想我可以简化我的问题,不需要用到CBET大後来提到的那部分,
我只要把每次输入的xyrgb都形成一个M,然後将每次产生的M加在一起,
再套上CBET大提供的转成java方式即可。
而我也试过这想法应该可以实现,以下是我用来试验想法的程式码:
M=zeros(2,2,3,2); %最後一个2是用来表示这个M有2层
M(1,1,1,1)=255; %第一层M的(x,y)=(1,1)的那格是255的红色
M(2,2,3,2)=255; %第二层M的(x,y)=(2,2)的那格是255的蓝色
再令
G=M(:,:,:,1); H=M(:,:,:,2); m=G+H;
imshow(uint8(m)); %如此是可以显示出我要的图的,因此我认为此想法可行。
但问题又出现,我不知道该怎麽把所有的M累加在一起,
我的想法是带入回圈的方式,当我按下ok,就会callback到这部份的程式码,
然後i就变成i+1,重新跑过一次上面那段,然後再和前一次的M加起来。
打了这麽多其实我的问题主要是问说
我能不能用类似sum的方法把M(:,:,:,i)全部累加再一起呢?
也就是说把M(:,:,:,1) >第一层的M
M(:,:,:,2) >第二层的M
.
.
.
. 都累加起来呢?
※ 编辑: hwwwh 来自: 114.46.198.24 (02/13 16:55)
8F:推 CBET:sum(M, 4) 02/13 20:56