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