在matlab中在视频帧上绘制多边形的麻烦

时间:2013-12-25 17:57:41

标签: matlab image-processing matlab-cvst

我尝试在视频帧上绘制多边形。像这样:

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];                   % top-left again to close the polygon
newBoxPolygon = transformPointsForward(tform, boxPolygon);

Poly = [newBoxPolygon(1,1) newBoxPolygon(1,2) newBoxPolygon(2,1) newBoxPolygon(2,2) ...
        newBoxPolygon(3,1) newBoxPolygon(3,2) newBoxPolygon(4,1) newBoxPolygon(4,2)...
        newBoxPolygon(5,1) newBoxPolygon(5,2)];
sceneImage = insertShape(sceneImage, 'Polygon', Poly, 'Color', 'green');
step(hVideoOut, sceneImage);

之后,我收到了一个错误: 使用vision.VideoPlayer / step时出错 如果没有先调用release()方法,则不允许更改输入1的大小。

如果我删除了'insertShape'函数,那么除了没有绘制图形外,一切都很好。

1 个答案:

答案 0 :(得分:1)

我的猜测是你正在使用灰度视频,当没有检测到任何东西时,你正在将灰度图像传递给视频播放器。但是,insertShape会返回RGB图像,因为您要在其中插入绿色多边形。问题是,一旦您调用step的{​​{1}}方法,就无法在后续调用中更改传入其中的图像大小。因此,即使没有检测到任何内容,您也必须确保始终显示RGB图像。您可以使用RGB视频,也可以通过复制灰度图像3次来创建3平面图像(例如使用vision.VideoPlayer