作者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