欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2024-03-25 17:21:10
...

本次主要是在一系列图片中绘制运动物体的轨迹,
思路:
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实现
蓝线为自己绘制点连成的,红色为质心
测试图集:(只是提供一些列图片)
链接: https://pan.baidu.com/s/1FnoDEPJoFjQfmCLewfxVeg 提取码: ipi5

相关标签: 日常问题