您的位置:首页 > 编程语言 > MATLAB

C#调用MATLAB的COM组件

2008-04-06 15:53 423 查看
一.步骤
1.编写M函数
2..制作COM组件
a.在MATLAB工作空间中输入comtool依照步骤输入组件名及类名.
(注:本人在6.5下做COM组件未成功.7.0下成功)
b.编译.其中组件名_1.0.dll便是作好的组件.
3.调用COM组件
a.新建C#项目
b.添加引用
右击右边的解决方案管理器中的引用----选择COM,找到自己制作的 组件名称_1.0.dll,选择确定,即可.
c.调用组件
编写调用代码
二.实例
1.无参数
a.m函数 rs_jpg
function rs_jpg
I=inread('c:jpg');
Imshow(I);
b.COM组件
组件名称comtest,类名testclass
c.调用代码
comtest.testclassClass testclass1=new comtest.testclassClass();
testclass1.rs_jpg();
2.有参数
a.m函数 split2rgb.m
split2rgb.m的源代码
%%// 测试文件
function [m_nHeight,m_nWidth,mOrigR,mOrigG,mOrigB]=Split2RGB(FileName)
%%// 读入一个Jpg文件,
mOrigData=imread(FileName);
%mDestData=imresize(mOrigData,0.5);
imwrite(mOrigData,'c:\2.jpg');
%%// 用三个变量保存其R,G,B分量
mOrigR=mOrigData(:,:,1);
mOrigG=mOrigData(:,:,2);
mOrigB=mOrigData(:,:,3);

%%// 获得图象的高度,宽度
[m_nHeight,m_nWidth]=size(mOrigR);
figure(1);
set(gcf,'MenuBar','none')
imshow(mOrigData);
title(['Orginal Image:',FileName],'Color','b','FontSize',14);
xlabel(['Height: ',num2str(m_nHeight),' Width :',num2str(m_nWidth)],'Color'
,'b','FontSize',12);

%%// 写param文件
paraFName=[FileName(1:length(FileName)-4),'.param'];
fid=fopen(paraFName,'w');
fwrite(fid,m_nHeight,'uint32');
fwrite(fid,m_nWidth,'uint32');
fclose(fid);
%%// 写 R 分量文件
RFName=[FileName(1:length(FileName)-4),'_R.rot'];
fid=fopen(RFName,'w');
fwrite(fid,mOrigR,'uint8');
fclose(fid);
%%// 写 G 分量文件
GFName=[FileName(1:length(FileName)-4),'_G.rot'];
fid=fopen(GFName,'w');
fwrite(fid,mOrigG,'uint8');
fclose(fid);
%%// 写 B 分量文件
BFName=[FileName(1:length(FileName)-4),'_B.rot'];
fid=fopen(BFName,'w');
fwrite(fid,mOrigB,'uint8');
fclose(fid);
b.Com组件
组件名称comtest类名:sglttest
c.c#调用代码
comtest.sgltestClass st=new comtest.sgltestClass();
object h=null,w=null,r=null,g=null,b=null;
object filename="c:\\1.jpg";
st.split2rgb(5,ref h,ref w,ref r,ref g,ref b,filename);

Trackback: http://tb.donews.net/TrackBack.aspx?PostId=1235354
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: