【问题标题】:How to draw a line on a video frame in MATLAB如何在MATLAB中的视频帧上画一条线
【发布时间】:2014-06-10 22:50:19
【问题描述】:

我正在尝试沿着黑棒从边缘到移动部件的绿点画一条细红线,这是我之前在视频中发现的。我正在逐帧处理视频。

我可以找到两点(起点和终点),但我被困在如何使两点和它们之间的点线性变为红色。

例如

对于图片中的当前帧,顶点坐标是左上角(0,0)右下45和右237,绿点坐标是左上角下231和右238。

所以我需要从 (237,45) 到 (231,238) 画一条线。

我如何将中点设为绿色是替换当前帧矩阵中的像素值。我正在尝试采用类似的方法,但可能有更有效的方法。

【问题讨论】:

标签: matlab computer-vision matlab-cvst


【解决方案1】:

很遗憾,您不能在vision.VideoPlayer 上使用句柄图形命令。但是,有一个函数insertShape,可以让您在显示之前直接绘制到图像中。

【讨论】:

  • insertShape 函数是在 R2013 中提出的。我用的是 2012a。
  • 在这种情况下,您可以使用vision.ShapeInserter 对象。
【解决方案2】:
imshow(image_name);
hold on
[n, m] = imsize(image_name);
plot([231 237], [n-238, n-45], 'r');

这应该使用标准绘图工具直接在图像上绘图。您需要使用 n 值,因为图像使用左上角为 (0,0),其中绘图使用左下角。 plot 命令只是绘制一个由 2 个点组成的数组,它将自动与一条线连接。你可以直接编辑像素,但是找到要编辑的像素然后保持整洁真的很麻烦

【讨论】:

  • 这是个好建议。但我想将像素值更改为红色 [1 0 0],而不是添加额外的形状。
  • 你可以使用a = getframe()之类的东西来抓取情节的框架,然后用a.cdata将其插入到您的图像中
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-28
  • 1970-01-01
  • 2016-06-19
  • 1970-01-01
相关资源
最近更新 更多