我尝试在视频帧上绘制多边形。像这样:
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'函数,那么除了没有绘制图形外,一切都很好。
答案 0 :(得分:1)
我的猜测是你正在使用灰度视频,当没有检测到任何东西时,你正在将灰度图像传递给视频播放器。但是,insertShape
会返回RGB图像,因为您要在其中插入绿色多边形。问题是,一旦您调用step
的{{1}}方法,就无法在后续调用中更改传入其中的图像大小。因此,即使没有检测到任何内容,您也必须确保始终显示RGB图像。您可以使用RGB视频,也可以通过复制灰度图像3次来创建3平面图像(例如使用vision.VideoPlayer
。