在网上看了好多篇VB调matlab的方法的文章。最后选定了一种基于com组件实现vb对matlab的调用。(最终目的是——生成可执行文件,脱离matlab)
可是我发现简单一点的程序还可以调用,可是稍微复杂一点的程序都调用不了。(我要用matlab进行图像处理)
比如如下程序,怎么用vb调出来呢??????拜托大家指点了!!感激不尽
%***************初始化,载入图像**********************
clc
clear all; 
close all;
A = imread('C:\MATLAB\20110427171533-1360642877.jpg');
A1= rgb2gray(A);%unit8格式灰度图
A2=im2double(A1);%double格式灰度图
%*****************第一部分:图像滤波*************************
%-------添加噪声-------------
B=imnoise(A2,'salt & pepper',0.03);%添加椒盐噪声灰度图%-------中值滤波(double格式)------------
%设输入的图像是B,模版为3*3,中值滤波后为C
n=3;%模版为3*3
p=size(B);   %输入图像是p×q的,且p>n,q>n
C=B;
for i=1:p(1)-n+1
    for j=1:p(2)-n+1
        c=B(i:i+(n-1),j:j+(n-1)); %取出B中从(i,j)开始的n行n列元素,即模板(n×n的)
        e=c(1,:);      %是c矩阵的第一行
        for u=2:n
            e=[e,c(u,:)];     %将c矩阵变为一个行矩阵    
        end
        mm=median(e);      %mm是中值
        C(i+(n-1)/2,j+(n-1)/2)=mm;   %将模板各元素的中值赋给模板中心位置的元素,未被赋值的元素取原值
    end
end%----------画图------------
figure
subplot(2,2,1);
imshow(A2);
title('原图');
subplot(2,2,2);
imshow(B);
title('添加椒盐噪声后的图像');
subplot(2,2,3);
imshow(C)
title('中值滤波后的图像');
%****************第二部分:计算物体面积********************
%-----------图像二值化-----------
%输入图像为C,输出图像为D
level=graythresh(C); %获取图像的阈值
D0=im2bw(C,level); %图像二值化
D1=double(D0);
D=1-D1;
%----方法1:直接计算(适合任何图形)
s1=bwarea(D);%图像面积=像素为1的个数
%----方法2:坐标计算(只适合规则图形)-----------
[m,n]=size(D);
for i=1:m
    x(i)=sum(D(i,:));%每行累加
end
[a1,b1]=sort(x);
for j=1:n
    y(j)=sum(D(:,j));%每列累加
end
[a2,b2]=sort(y);
x0=b1(m);
y0=b2(n);%几何中心坐标为(x0,y0)
d=(a1(m)+a2(n))/2;%直径
s2=pi*(d^2)/4;%图像面积disp('*********************物体面积***************************************')
disp('方法1:')
s1=s1
disp('方法2:')
s2=s2
disp('*******************************************************************')