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

matlab使用opencv (轮廓提取+直线拟合)

2014-09-07 16:04 766 查看
I =imread('1.jpg');%读取图片
I1 = double(I1);
[Gx,Gy]=gradient(I1);
G=sqrt(Gx.*Gx+Gy.*Gy)/255;%%求图像梯度

I2 = rgb2gray(G);
figure,imshow(G);

I2(I2<30/255)=0;%%%二值化
I2(I2>=30/255)=1;

U= findContours(I2);%轮廓提取
[m,n] = size(U);%得到轮廓数量
aa = ones(n,4);
for i=1:n
d = U(1,i);
[ii,jj] = size(d{1,1});
jj
if jj<10%过小的轮廓不要

continue;
end
%%%%%%直线拟合-start%%%%%%%%%%%%%

aa(i,:)= fitLine(d{1,1});
%%%%%%直线拟合-end%%%%%%%%%%%%%
end


将得到四个值 前两个为x、y方向的单位向量长度利用x、y计算角度

这样就得到角度了 rad2deg( atan(y/x))
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: