
imsubtract是图像处理工具箱自带的函数,但你把自己写的脚本也保存成imsubtractm了,导致遮盖了原来的函数。把你的文件改名就可以了(注意在资源管理器里面改,不要在编辑器里面另存)
。
希望对你能有所帮助。
有这么几个组合:
1LabVIEW + Matlab的。 LabVIEW具有强大的数据采集功能,自动测试占60%的市场份额在国外和国内尚未开发。它的相机有很多很好的支持,与NI视觉开发模块视觉可以很容易地实现诸多的功能。它可以计算出与数学联合开发的方便的工具,MATLAB函数极其强大的。然而,库函数并不富有。
2VC + +系列产品。现在使用最广泛的工业。工业相机生产企业都将有VC开发工具包。有很多的开源的支持库,如OpenGL,OpenCV的,等,因此,它也是非常强大的。但VC开始缓慢,编程是一个更加复杂,维护困难。
3Delphi。我不熟悉,说是搞图像处理的是非常强大的。现在想太多。
说简单的图像处理,图像采集不涉及没有其他比非MATLAB。这是太强大了。 matlab做的非常少,很好的实现了图像采集。我现在做的机器人双目立体视觉与LabVIEW + Matlab的联合开发,以至于后来,我觉得只是利用Matlab,但已经买了,找到MATLAB控制摄像头捕捉到好。
电子邮件:favor188@gmailcom
Hmily
大小不相同你怎么做加减乘除?
A) 图像加法运算
I=imread('ricetif');
imshow(I)
J=imread('cameramantif');
figure,imshow(J)
K=imadd(I,J);
figure,imshow(K)
K2=imadd(I,J,'uint16');
figure,imshow(K2,[])
RGB=imread('flowerstif');
RGB2=imadd(RGB,50);
imshow(RGB)
figure,imshow(RGB2)
RGB3=imadd(RGB,100);
figure,imshow(RGB3)
B) 图像减法运算
I=imread('ricetif');
imshow(I)
background = imopen(I,strel('disk',15)); %估计背景图像
figure, imshow(background);
I2=imsubtract(I,background); %从原始图像中减去背景图像
figure, imshow(I2)
C) 图像乘法运算
I=imread('moontif');
J=immultiply(I,12);
K=immultiply(I,05);
imshow(I)
figure,imshow(J)
figure,imshow(K)
的输出自己改吧
原因很简单,回调函数popupmenu_Callback中没有定义变量im1和im2,你直接用这两个为定义的变量进行运算,当然会出错。
类似的问题在回调函数OKpush_Callback也有,那里面的im3同样也没有定义。
你需要明白,每一个回调函数都是“函数”,它们有各自独立的工作区,不能够把不同函数工作区的变量串着使用。要想在不同工作区之间交换数据,基本的做法有两种:
1、使用函数的输入参数表。
但由于GUI回调函数的参数形式是固定的,所以这种方法没有用。
2、使用全局变量。
例如,在读入的函数里定义global im1 im2
在 popupmenu_Callback里定义global im1 im2 im3
在OKpush_Callback里定义global im3
即可让你的代码运行(global应该在函数体的最前面)。
但是,使用全局变量尽管有时候比较方便,但不属于推荐的方式。做GUI推荐的做法有这样两种:
1、通过句柄获取数据。
回调函数的输入参数有handles这个变量,里面记录了GUI各要素的句柄,如果里面有图像的句柄,则可以通过get函数获取其CData属性,即为图像数据。
2、通过setappdata和getappdata传递数据。
例如,在读入的函数里加上:
setappdata(gcf,'im1',im1);
setappdata(gcf,'im2',im2);
在 popupmenu_Callback里加上:
im1=getappdata(gcf,'im1');
im2=getappdata(gcf,'im2');
%%%% 计算im3
setappdata(gcf,'im3',im3);
在OKpush_Callback里加上:
im3=getappdata(gcf,'im3');
另外有个建议:你的popupmenu和OK按钮二者的代码其实可以合并:
如果希望选完popup就立即显示新图像,则可以把OKpush_Callback的代码并入到popupmenu_Callback的后面;
如果按OK按钮才显示新图像,则可以把popupmenu_Callback的代码并入到OKpush_Callback的前面。
写了这么多,希望对楼主有帮助。满意的话请采纳,若有疑问可继续追问。
imsubtract是图像处理工具箱自带的函数,但你把自己写的脚本也保存成imsubtractm了,导致遮盖了原来的函数。把你的文件改名就可以了(注意在资源管理器里面改,不要在编辑器里面另存)
。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)