Matlab 如何在转换为帧的视频中使用projective2d和多边形绘制形状

Matlab 如何在转换为帧的视频中使用projective2d和多边形绘制形状,matlab,image-processing,video,polygon,matlab-cvst,Matlab,Image Processing,Video,Polygon,Matlab Cvst,嗨,我正在尝试从相机中提取帧,并在获取的帧中应用冲浪检测。这个过程运行得很好,除了我无法在检测到的对象周围绘制形状或多边形。在估计几何变换中,我能够得到投影2D T形式。但是,当我试图在检测到的对象周围绘制一个长方体多边形时,我无法看到任何多边形或形状。有时多边形出现并消失。有时,多边形在检测到的对象周围不精确 tform和polygon的代码如下所示: [tform, ~, ~,status] = ... estimateGeometricTransform(matchedBoxPoints,

嗨,我正在尝试从相机中提取帧,并在获取的帧中应用冲浪检测。这个过程运行得很好,除了我无法在检测到的对象周围绘制形状或多边形。在估计几何变换中,我能够得到投影2D T形式。但是,当我试图在检测到的对象周围绘制一个长方体多边形时,我无法看到任何多边形或形状。有时多边形出现并消失。有时,多边形在检测到的对象周围不精确

tform和polygon的代码如下所示:

[tform, ~, ~,status] = ...
estimateGeometricTransform(matchedBoxPoints, matchedScenePoints, 'projective');

%box Polygon
boxPolygon = [1, 1;...                           % top-left
     size(boxImage, 2), 1;...                 % top-right
     size(boxImage, 2), size(boxImage, 1);... % bottom-right
     1, size(boxImage, 1);...                 % bottom-left
     1, 1]; 
newBoxPolygon = transformPointsForward(tform, boxPolygon);

% Display the frame
imshow(data)
hold on;
      line(newBoxPolygon(:, 1), newBoxPolygon(:, 2), 'Color', 'y');
title('Detected Box');
refreshdata;

如果多边形消失或不准确,可能是因为没有找到足够的匹配项,或者是因为匹配项不正确。您可能希望了解情况是否如此,如果是,请尝试调整
matchFeatures
函数的参数


您还可以使用
insertShape
将多边形直接绘制到图像像素中。但是,这同样假设您具有良好的特征匹配,并且计算了正确的变换。

如果多边形消失或不准确,可能是因为您没有找到足够的匹配,或者是因为您的匹配不正确。您可能希望了解情况是否如此,如果是,请尝试调整
matchFeatures
函数的参数


您还可以使用
insertShape
将多边形直接绘制到图像像素中。但是,这同样假设您有良好的特征匹配,并且您已经计算了正确的变换。

检测到了冲浪点。让我知道是否有任何方法可以在不使用tform的情况下在检测到的冲浪点周围绘制形状,并找到检测到的对象的中心。有检测到的冲浪点。让我知道是否有任何方法可以在不使用tform的情况下在检测到的冲浪点周围绘制形状,并找到检测到的对象的中心。谢谢..没有足够的匹配点。我使用if-else语句处理了错误。现在,如果没有足够的匹配点,我可以在静态文本中显示。。。再次非常感谢。不客气。另外,正如我之前所说,通过调整
detectSURFFeatures
matchFeatures
的参数,您可能能够改进结果。我明白了。如果您增加
detectSURFFeatures
'NumOctaves'
参数,或者如果您增加
matchFeatures
'MaxRatio'
参数,您可能能够获得更多匹配,并且不会出现此错误。这是物体检测的记录。它不那么准确。当我使用八度音阶数时,如pts=detectSURFFeatures(img,'MetricThreshold',200,'NumOctaves',3,'NumScaleLevels',4);我得到的错误如下:输入号1,I,应该是以下类型之一:logical,uint8,int16,uint16,single,double,而它的类型是char。detectSURFFeatures>parseInputs(第82行)validateattributes(I,{'logical'、'uint8'、'int16'、'uint16',…有没有办法在检测中保持稳定性谢谢你..没有足够的匹配点。我使用if-else语句处理了错误..现在,如果没有足够的匹配点,我可以在静态文本中显示..再次非常感谢。不客气。另外,正如我之前所说,你可能能够改进通过调整
detectSURFFeatures
matchFeatures
的参数来验证结果。我明白了。如果您增加
detectSURFFeatures
'NumOctaves'
参数,或者增加
matchFeat的
'MaxRatio'
参数,您可能会获得更多匹配,并且不会出现此错误ures
。这是物体检测的记录。它不太准确。当我使用像下面这样的八度音阶数时,pts=detectsurf功能(img,'MetricThreshold',200,'NumOctaves',3,'numscalevels',4);我得到的错误如下:预期输入编号1,I,为以下类型之一:logical,uint8,int16,uint16,single,double,而它的类型是char。detectSURFFeatures>parseInputs(第82行)中的错误验证属性(I,{'logical',uint8',int16',uint16',…有没有方法在检测中保持稳定性