Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在MATLAB中绘制视频帧上的直线_Matlab_Computer Vision_Matlab Cvst - Fatal编程技术网

如何在MATLAB中绘制视频帧上的直线

如何在MATLAB中绘制视频帧上的直线,matlab,computer-vision,matlab-cvst,Matlab,Computer Vision,Matlab Cvst,我试图沿着黑色的木棍从边缘到运动部件的绿点画一条细细的红线,这是我以前在视频中发现的。我正在逐帧处理视频 我可以找到两个点(起点和终点),但我被困在如何使这两个点和它们之间的点呈红色线性 例如 对于图片中的当前帧,从左上角(0,0)开始,顶点坐标向下45,向右237,而绿点坐标向下231,向右238 所以我需要画一条从(237,45)到(231238)的线 我如何使中点变为绿色是在替换当前帧矩阵中的像素值。我正试图采取类似的方法,但可能有更有效的方法 imshow(image_name); ho

我试图沿着黑色的木棍从边缘到运动部件的绿点画一条细细的红线,这是我以前在视频中发现的。我正在逐帧处理视频

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

例如

对于图片中的当前帧,从左上角(0,0)开始,顶点坐标向下45,向右237,而绿点坐标向下231,向右238

所以我需要画一条从(237,45)到(231238)的线

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

imshow(image_name);
hold on
[n, m] = imsize(image_name);
plot([231 237], [n-238, n-45], 'r');


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

不幸的是,您无法在
vision.VideoPlayer上使用handle graphics命令。但是,有一个函数
insertShape
,它允许您在显示图像之前直接绘制图像。

您可以实现Bresenham的直线算法。我通过阅读Adafruit GFX库中的注释了解到,是否可以使用
line
命令在该图形中绘制?R2013中提出了insertShape函数。我使用2012a。在这种情况下,您可以使用
vision.ShapeInserter
object。这是一个很好的建议。但我想将像素值更改为红色[1 0 0],而不是添加额外的形状。Yuo可以使用类似于
a=getframe()
的方法获取绘图帧,并使用
a.cdata将其插入图像中