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