用MATLAB批量求多幅图片轮廓与图片边缘的坐标
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用MATLAB批量求多幅图片轮廓与图片边缘的坐标相关的知识,希望对你有一定的参考价值。
我已经可以求单幅照片中轮廓与图片边缘的坐标,如下
Close all;clear all;clc;
I=imread('D:\重要文件\A中期-图像处理\404.7\7二值图像\1.bmp');%读取二值图像
J1=imfill(I,'holes');%填充
J2=bwperim(J1);%轮廓提取
rect=[0 0 191 119];
J3=imcrop(J2,rect);
imshow(J3)
[x,y]=find(J3==1)
xsort = sort(x,'descend');
ind1=find(x==xsort(1));
point1=[x(ind1),y(ind1)]; %第一个边缘点
xlswrite('D:\重要文件\A中期-图像处理\试.xls',point1)
但是我求多幅(例:3幅)时,程序只有一个结果,默认3幅照片中其中一个坐标,其他坐标不显示,如下
Close all; clear all; clc;
dir='D:\重要文件\A中期-图像处理\404.7\7二值图像\';
for i=1:3
fn=strcat(dir,int2str(i));
f=imread(strcat(fn,'.bmp'));
J1=imfill(f,'holes');%填充
J2=bwperim(J1);%轮廓提取
rect=[0 0 191 119];
J3=imcrop(J2,rect);
[x,y]=find(J3==1)
xsort = sort(x,'descend');
ind1=find(x==xsort(1));
point1=[x(ind1),y(ind1)]; %第一个边缘点
xlswrite('D:\重要文件\A中期-图像处理\404.7\404.7焦点坐标.xls',point1,'sheet1',['A',num2str(i)])
end
求大神指点迷津
dir='D:\\重要文件\\A中期-图像处理\\404.7\\7二值图像\\';
point1 = [];
for i=1:3
fn=strcat(dir,int2str(i));
f=imread(strcat(fn,'.bmp'));
J1=imfill(f,'holes');%填充
J2=bwperim(J1);%轮廓提取
rect=[0 0 191 119];
J3=imcrop(J2,rect);
[x,y]=find(J3==1)
xsort = sort(x,'descend');
ind1=find(x==xsort(1));
point1=[point1;x(ind1),y(ind1)]; %建议先看看3幅图像各自的边缘点是否都识别出来了,确认后可以把point1整体保存到xls中
%xlswrite('D:\\重要文件\\A中期-图像处理\\404.7\\404.7焦点坐标.xls',point1,'she%et1',['A',num2str(i)])
end 参考技术A 对图片边缘点的提取 F=imread('butterfly.jpg'); F1=~im2bw(F);
F2=bwfill(F1,'holes'); SE=ones(3)
F3=imdilate(F2,SE); F4=bwperim(F2); figure,imshow(F4);
imwrite(F4,' butterfly2.jpg '); 对边缘点的坐标化 a=imread('picture.bmp'); b=rgb2gray(a);
c=edge(b);
imshow(double(c)); c
[x,y]=find(c)
plot(y,x,'k.') 参考技术B 楼主是什么版本的matlab
Close大写也可以?
matlab 提取图像轮廓(图像边缘提取)
利用edge()函数提取图像轮廓,绘制出对象的边界和提取边界坐标信息,matlab实现代码如下:
程序运行结果:
以上是关于用MATLAB批量求多幅图片轮廓与图片边缘的坐标的主要内容,如果未能解决你的问题,请参考以下文章