手动识别移动物体并画出运动轨迹,计算其质心坐标--matlab实现

本次主要是在一系列图片中绘制运动物体的轨迹,
思路:
1.利用matlab显示每一张图片
2.利用ginput函数获取坐标位置(这里可以优化成自动化、如颜色匹配等,但是有误差)
3.根据坐标位置绘制图像

涉及知识点:
1.图片文件路径读取
2.图片显示
3.获取指定位置坐标
4.根据坐标在已知图像上绘制轨迹


SamplePath1 =  'F:\shiyan\fire_wirl\7.0kw_00_18.66rpm_5\1\';  %存储图像的路径
fileExt = '*.bmp';  %待读取图像的后缀名
%获取所有路径
files = dir(fullfile(SamplePath1,fileExt)); 
len1 = size(files,1);
%遍历路径下每一幅图像
loc=[];
for i=1:len1
   fileName = strcat(SamplePath1,files(i).name); 
   image = imread(fileName);
   %image = imresize(image,[500 500]);
   imshow(image)
   [x,y] = ginput(1);
   loc = [loc,[x,y]];
end
fileName = strcat(SamplePath1,files(1).name);
image = imread(fileName);
imshow(image)

%绘制直线
for i=1:2:(length(loc)-3)
   %disp(i)
   x=loc(i);
   x1=loc(i+2);
   y=loc(i+1);
   y1=loc(i+3);
   line([x,x1],[y,y1]);
end


%取平均值
x_sum = 0;
y_sum = 0;
for i=1:2:(length(loc)-1)
   x_sum=x_sum+loc(i);
   y_sum=y_sum+loc(i+1);
end

%画圆心
x_ave=0;
y_ave=0;
x_ave=x_sum*2/length(loc);
y_ave=y_sum*2/length(loc);
hold on; 
plot(x_ave, y_ave,'ro');

只要更换路径即可获得相应结果
结果图如下:
手动识别移动物体并画出运动轨迹,计算其质心坐标--matlab实现_第1张图片
蓝线为自己绘制点连成的,红色为质心
测试图集:(只是提供一些列图片)
链接: https://pan.baidu.com/s/1FnoDEPJoFjQfmCLewfxVeg 提取码: ipi5

你可能感兴趣的:(日常问题)