C#调用MATLAB的COM组件

来源:互联网 发布:mysql存储emoji乱码 编辑:程序博客网 时间:2024/05/17 23:11
C#调用MATLAB的COM组件
一.步骤
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);