我有一个在实验中移动软管的视频,我需要检测软管中的某些点并计算它们的运动幅度,我使用下面的代码,我能够使用detectSURFFeatures提取所需的点,函数得到许多不必要的点,所以我使用cuba = ref_pts.selectStrongest(5);只选择五个点,问题是我无法获得一个函数来放置关于这5个点的边界框并通过视频得到它们的像素值,请建议可以使用哪些函数,谢谢:))
clear;
clc;
% Image aquisition from Video and converting into gray scale
vidIn = VideoReader('ItaS.mp4');
%% Load reference image, and compute surf features
ref_img = read(vidIn, 1);
ref_img_gray = rgb2gray(ref_img);
ref_pts = detectSURFFeatures(ref_img_gray);
[ref_features, ref_validPts] = extractFeatures(ref_img_gray, ref_pts);
figure; imshow(ref_img);
hold on; plot(ref_pts.selectStrongest(5));
cuba = ref_pts.selectStrongest(5);
stats1 = round(cuba.Location);
答案 0 :(得分:0)
如果要查找覆盖所选五个点的边界框:stats1现在包含所选5个点的(x,y)坐标。找到x和y坐标的最小值和最大值。最小值x和y为您提供矩形的起点。现在,边界框的宽度和高度是y和x方向上的最大值和最小值的差值。
如果要在边界框内提取原始图像的一部分:只需将该部分复制到另一个变量即可。请考虑以下示例。
img2 = img1(y:h,x:w,:)
这里,x和y是边界框左上角的x和y坐标。 w和h是边界框的宽度和高度。