这是一个比较难搞定的问题,详细请看下图:
这儿有七个点,我想把这七个点排序,然后连线,实现下面的效果:
这怎么实现的呢?先写步骤然后上代码:
1,先识别多个点的质心
2,通过质心进行连线和画点操作
//题外话,关于连线和画点操作是如何做到的呢,这是通过对原图的数据进行修改做到的
直接给出代码,还有图片保存在代码里的路径下用matlab运行就能使
I=imread('d:\\自行车测试1.jpg');%读取原图像
%figure(1);imshow(I);%显示原图像
I_gray=rgb2gray(I);%原图像变为灰度图像
level=graythresh(I_gray);%计算图像I_gray的全局阈值,level为标准化灰度值,其范围为[0 1]
[height,width]=size(I_gray);%计算灰度图像的长宽
I_bw=im2bw(I_gray,level);%im2bw使用阈值level将灰度图像转换为二值图像.
%figure(2);imshow(I_bw);%显示二值图像(背景为白色)
for i=1:height %%循环中进行反色
for j=1:width
if I_bw(i,j)==1
I_bw(i,j)=0;
else I_bw(i,j)=1;
end
end
end
%figure(3);imshow(I_bw);%显示取反后的二值图像(背景为黑色)
[L,num]=bwlabel(I_bw,8);%bwlabel标注二值图像I_bw中的目标物体,返回标识矩阵L和I_bw中目标物体的数量num,8表示连通数.
plot_x=zeros(1,num);%%zeros(m,n)产生m×n的全0矩阵.用于记录质心位置的横坐标
plot_y=zeros(1,num);%zeros(m,n)产生m×n的全0矩阵.用于记录质心位置的纵坐标
plot_z=zeros(1,num);%zeros(m,n)产生m×n的全0矩阵.用于记录质心位置的纵坐标
poly_x=zeros(1,num);%%zeros(m,n)产生m×n的全0矩阵.用于记录质心位置的横坐标
poly_y=zeros<