Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/24.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_Line_Draw - Fatal编程技术网

在matlab中如何在图像上画线?

在matlab中如何在图像上画线?,matlab,line,draw,Matlab,Line,Draw,我有两点要说: P(x,y)[点位于图像顶部] P'(x',y')[点位于图像底部] 现在我想在这两点之间画一条线……这条线应该出现在图像上,意味着应该是可见的 如何做到这一点 在图像上画线的最简单方法是使用 如果您想要不同的颜色,请将字母更改为任何一个rgbcmykw,或使用RGB三元组(红色是[1 0])。查看以获取更多格式选项。您可以使用访问中的技术下载并与结合使用。或者仅仅使用他的技术。无论哪种方式都有效。如下所示: load clown image(X) colormap(map)

我有两点要说:

  • P(x,y)[点位于图像顶部]
  • P'(x',y')[点位于图像底部]
现在我想在这两点之间画一条线……这条线应该出现在图像上,意味着应该是可见的


如何做到这一点

在图像上画线的最简单方法是使用


如果您想要不同的颜色,请将字母更改为任何一个
rgbcmykw
,或使用RGB三元组(红色是
[1 0]
)。查看以获取更多格式选项。

您可以使用访问中的技术下载并与
结合使用。或者仅仅使用他的技术。无论哪种方式都有效。

如下所示:

load clown
image(X)
colormap(map)
c = size(X,2)
mid = round(c/2)
X(:,mid) = 1
image(X)
figure;
hold on;
imagesc(img);
line([x1,x2],[y1,y2],'Color','r','LineWidth',2)
hold off

其中y是图像中的“向下”方向,x是图像中的“向右”方向。根据需要更改颜色和宽度以使其可见

如果您有计算机视觉工具箱。您可以简单地使用shapeInserter

退房

要指定行,必须使用下面的行。否则,您可能会得到一个矩形

例如:

%draw a line from point (100,100) to (200,200) on an image saved as nextFrame

line = int32([100 100  200 200]);
shapeInserter = vision.ShapeInserter('Shape', 'Lines');
nextFrame = step(shapeInserter, nextFrame, line);

查看属性以查看可以编辑的内容。

从R2014a版本开始,您可以使用insertShape,如下所示:

img=insertShape(img,'Line',[x1 y1 x2 y2],'LineWidth',2,'Color','blue')

也可以使用同一命令绘制多条线,但x1、x2、y2、y3必须是列向量,每行代表一条新线


insertShape还允许您绘制矩形、圆形和多边形。

我相信您的问题以前已经讨论过:,,它几乎是完全重复的,但不完全相同。请查看以下两个链接:您提供的此链接仅适用于二值图像…而我的图像不是二值图像。其余的链接不是我用的。所以我需要一些不同的东西。如果它是彩色图像,你应该使用
X(:,mid,:)=[1]。这是一条垂直线。坡度是无限的。沿直线以背景图像颜色的相反颜色(RGB)绘制一条线很容易(不难),但更有趣……chee:a)这是一个不同的问题,b)使用点坡度公式绘制一条线。这只有在拥有计算机视觉工具箱的情况下才有效。你能推荐一种不用它的方法吗?如何使用虚线?
%draw a line from point (100,100) to (200,200) on an image saved as nextFrame

line = int32([100 100  200 200]);
shapeInserter = vision.ShapeInserter('Shape', 'Lines');
nextFrame = step(shapeInserter, nextFrame, line);