Re: [問題]GUI的slider值與圖片透明化設定

看板MATLAB作者 (郝渴連)時間14年前 (2012/01/08 12:25), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串2/2 (看更多)
※ 引述《maxgary (無心)》之銘言: : 小弟是matlab新手 最近在使用matlab做影像處理 : 可是碰到幾個問題 希望有前輩可以解惑 : 1. : 我使用slider來選取我要的圖片 : slider值設定在0~25 slider的Value預設為0~1耶! 你是把min改成0, max改成25嗎? : 用callback來讀取position值 : position=num2str(get(handles.slider1,'Value')); : set(handles.text1,'String',position); : i=position : i1=i+71 : bmp_name=['photo_' num2str(i) '.bmp']; : 可是當運行時 : i1的值都會變得很奇怪 : 當position=1時 輸出的i值會變成49 : 而i1會變成120 : 此時num2str(i) 會變成 49 50 0三個值 當slider的Value為1這個數字時position是1這個文字, (1的ASCII碼為0x31H也就是數字49), 所以i1很合理的變成49+71=120, num2str(i)是字串'120',所以很合理的是49,50,48這3個數字. (2的ASCII碼為0x32H也就是數字50) (0的ASCII碼為0x30H也就是數字48) : 但是如果不做i1的運算 : i值都很正常 會在0~25之間 : 是設定上有問題嗎? i1 = i + 71這個動作是把數字(i)轉換成ASCII碼(i1), 而position=num2str(get(handles.slider1,'Value')); i=position 所以i在0~25反而是不正常的, 因為position是字串. 若要i在0~25應該是這樣吧! position=get(handles.slider1,'Value'); (slider的min為0, max為25) : 2. : 當我將圖片做edge detection後 : 是否能夠將處理後的圖片邊緣(白色)部分塗上別的顏色 : 並且將處理後的圖片黑色部分透明化後疊在原來的圖片上? : 上色部分目前毫無頭緒 : 而透明化的部分 : 我參考網路上的做法 使用alpha : X=imread('photo.bmp'); : h=imshow(X) : F=size(X); : G=ones(F(1),F(2)); : G(X(:,:,1)<1)=0; : set(gca,'visible','off','color','none') : set(h,'AlphaData',G) : 可是做出來的圖片跟原來一樣 完全沒有效果 : 疊圖部分 因為我想將處理後的圖片透明化 : 這樣是否用hold就可以了? : 感謝各位前輩 你說的是使用AlphaData這個方法而非alpha, 若整張圖的透明度都一樣時可用alpha這個function, 你的AlphaData是指定每個pixel的透明度, 圖沒有透明化應該是G(X(:,:,1)<1)=0這個部分有問題, 你必須要搞清楚欲消除部分的X須滿足什麼條件. -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 211.21.63.132

01/08 13:55, , 1F
非常感謝 slider的地方我知道了 不過透明度可能還要試試
01/08 13:55, 1F
文章代碼(AID): #1F2Hh6ka (MATLAB)
文章代碼(AID): #1F2Hh6ka (MATLAB)