作者mp19990920 (郝渴連)
看板MATLAB
標題Re: [問題]GUI的slider值與圖片透明化設定
時間Sun Jan 8 12:25:38 2012
※ 引述《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
1F:推 maxgary:非常感謝 slider的地方我知道了 不過透明度可能還要試試 01/08 13:55