→ hwwwh:謝謝! 透過java這個方式確實可以全螢幕了! 02/08 22:03
→ hwwwh:但java中的frame能否像figure一樣用hold on的方式重複使用? 02/08 22:04
推 CBET:好像沒辦法... 但要做到 hold on 的效果有一麻煩的方法 02/10 17:57
推 CBET:用 hold on 產生出想要的圖後,用 getframe 抓回 matlab 02/10 18:01
→ CBET:再用 frame2im 轉成圖,再用 java 顯示 02/10 18:02
→ 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)
推 CBET:sum(M, 4) 02/13 20:56