Re: [問題] 如何將MATLAB中IMSHOW秀出的圖變成全螢幕

看板MATLAB作者 (Jong)時間12年前 (2013/02/07 02:42), 編輯推噓4(404)
留言8則, 2人參與, 最新討論串3/3 (看更多)
※ 引述《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

02/07 11:15, , 1F
可參考 http://ppt.cc/INY- 不過顯示好像會有點延遲
02/07 11:15, 1F

02/08 22:03, , 2F
謝謝! 透過java這個方式確實可以全螢幕了!
02/08 22:03, 2F

02/08 22:04, , 3F
但java中的frame能否像figure一樣用hold on的方式重複使用?
02/08 22:04, 3F

02/10 17:57, , 4F
好像沒辦法... 但要做到 hold on 的效果有一麻煩的方法
02/10 17:57, 4F

02/10 18:01, , 5F
用 hold on 產生出想要的圖後,用 getframe 抓回 matlab
02/10 18:01, 5F

02/10 18:02, , 6F
再用 frame2im 轉成圖,再用 java 顯示
02/10 18:02, 6F

02/10 18:03, , 7F
希望有高手能提供更好的作法
02/10 18:03, 7F
真是太感謝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)

02/13 20:56, , 8F
sum(M, 4)
02/13 20:56, 8F
文章代碼(AID): #1H4gG69C (MATLAB)
文章代碼(AID): #1H4gG69C (MATLAB)