[英]Rounded corner rectangle coordinate representation
Matlab中的简单圆角矩形代码可以编写如下。
rectangle('Position',[0,-1.37/2,3.75,1.37],...
'Curvature',[1],...
'LineWidth',1,'LineStyle','-')
daspect([1,1,1])
如何获得该图的x和y坐标数组?
要获取轴单位边界,请执行以下操作:
axisUnits = axis(axesHandle) % axesHandle could be gca
axisUnits
将是一个具有以下语法的四元素数组: [xlowlim xhighlim ylowlim yhighlim]
,它还将包含3-D图的zlow和zhigh。
但是我认为这不是您需要知道的。 查看matlab文档中的矩形属性 ,我们发现:
位置四元素向量[x,y,width,height]
矩形的位置和大小。 以轴的数据单位指定矩形的位置和大小。 x,y定义的点指定矩形的一个角,宽度和高度分别定义沿x轴和y轴的大小。
它也记录在矩形文档中 :
rectangular('Position',[x,y,w,h])从点x,y绘制矩形,其宽度为w,高度为h。 以轴数据单位指定值。
看看这是否说明您想要什么。 您有一个x轴,该轴从−100到100,y轴从5到15。假设您要在x的范围内放置一个介于−30到−20之间的矩形,在y的范围内放置一个介于8至10的矩形。
rectangle('Position',[-30,8,10,2]);
正如评论所解释的那样,似乎没有直接的方法来查询由rectangle
创建的图形并提取x / y坐标。 另一方面,我可以想到两种简单的策略来获得坐标,这些坐标将紧密地再现由矩形生成的曲线:
(1)将图形另存为图像(例如.png),并处理图像以提取与曲线相对应的点。 一定程度的按摩是必要的,但是如果直率的话,这相对简单,我希望代码与从轴对象获取数据相比执行起来会有些慢。
(2)编写自己的代码以绘制具有弯曲边缘的矩形。 精确地重新创建matlab绘制的内容可能并不那么简单,但您可能会对自己的版本感到满意。
是否选择这些方法之一归结为(a)您认为可接受的执行速度(b)您需要多近地复制屏幕上绘制的rectangle
(c)是否具有图像处理例程,例如读取图像文件。
编辑
如果有图像处理工具箱,则可以按如下所示到达代表矩形的一组点:
h=rectangle('Position',[0,-1.37/2,3.75,1.37],...
'Curvature',[1],...
'LineWidth',1,'LineStyle','-')
daspect([1,1,1])
axis off
saveas(gca,'test.png');
im = imread('test.png');
im = rgb2gray(im);
figure, imshow(im)
请注意,您仍然需要应用阈值以从图像中选择相关点,然后变换坐标系并重新排列这些点,以便正确显示为已连接的集。 您可能还需要调整初始图像文件的分辨率,或者应用图像处理功能以获得平滑的曲线。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.