- 积分
- 1
- 注册时间
- 2007-3-31
- 仿真币
-
- 最后登录
- 1970-1-1
|
本帖最后由 ljelly 于 2009-6-4 16:21 编辑
我这里写了两个.m文件,都可以在MATLAB中顺利运行,但是在使用matcom与VC6编译时,第一个文件可顺利编译成可执行文件,但第二个却不行。请各位兄弟帮忙看一下哈,不胜感激!
(1)能够顺利通过编译的.m文件
[FileName,PathName] = uigetfile('*.*','选择二值图像文件');
imfile = strcat(PathName,FileName);
I=imread(imfile);
A=size(I);
B=[];
BX=[];
BY=[];
row=A(1,1);
col=A(1,2);
k=0;
m=0;
n=0;
x0=1.5;
x1=2*x0;
y0=x0;
LL=A(1,1);
dy=sqrt(3)*x0;
while( n < (row-dy) )
if (k==0)
y=y0;
else
y=y+dy;
end
k=k+1;
a=mod(k,2);
for j=2:3:col
x=2*x0*(j-2)/3.0+x0+a*x0;
m=ceil(x);
n=ceil(y);
if I(n,m)==0
B=[B,1];
else
B=[B,0];
end
xx=x;
yy=LL-y;
BX=[BX,xx];
BY=[BY,yy];
end
end
k1=0;
k2=0;
fid=fopen('gg.dat','w');
fprintf(fid,' \n');
for i=1:length(B)
if (B(i)==0)
k1=k1+1;
fprintf(fid,%d %4.2f %4.2f %4.2f\n',k1,BX(i),BY(i),x0);
end
end
fprintf(fid,'\n');
k2=k1;
for i=1:length(B)
if (B(i)==1)
k2=k2+1;
fprintf(fid,'%d %4.2f %4.2f %4.2f\n',k2,BX(i),BY(i),x0);
end
end
fprintf(fid,'\n');
fclose(fid);
(2)不能通过编译的.m文件
I = imread('CTROCK.png');
imshow(I)
hy = fspecial('sobel');
hx = hy';
Iy = imfilter(double(I), hy, 'replicate');
Ix = imfilter(double(I), hx, 'replicate');
gradmag = sqrt(Ix.^2 + Iy.^2);
se = strel('disk', 1);
Ie = imerode(I, se);
Iobr = imreconstruct(Ie, I);
Iobrd = imdilate(Iobr, se);
Iobrcbr = imreconstruct(imcomplement(Iobrd), imcomplement(Iobr));
Iobrcbr = imcomplement(Iobrcbr);
fgm = imregionalmax(Iobrcbr);
I2 = I;
I2(fgm) = 255;
se2 = strel(ones(1,1));
fgm2 = imclose(fgm, se2);
fgm3 = imerode(fgm2, se2);
fgm4 = bwareaopen(fgm3, 20);
I3 = I;
I3(fgm4) = 255;
bw = im2bw(Iobrcbr, 0.6);
figure, imshow(bw) |
|