如何解决如果我在图像上有矩形,然后将图像旋转 90 度,那么矩形的新坐标是多少?
所以为了提供进一步的上下文,假设我有一个 200 像素 x 200 像素的图像,上面有一个矩形,下面是红色:
我知道图像的高度和宽度,矩形的坐标以及红色矩形的高度和宽度。
所以我需要知道的是,如果我翻转整个图像(包括矩形),有没有办法计算出红色矩形的新坐标?我想一定有某种公式或算法可以应用来获得这些新坐标。
解决方法
这已经在 here 上得到了回答。以下是最适合我的用例的函数,它与您的用例非常相似。
def rotate(point,origin,degrees):
radians = np.deg2rad(degrees)
x,y = point
offset_x,offset_y = origin
adjusted_x = (x - offset_x)
adjusted_y = (y - offset_y)
cos_rad = np.cos(radians)
sin_rad = np.sin(radians)
qx = offset_x + cos_rad * adjusted_x + sin_rad * adjusted_y
qy = offset_y + -sin_rad * adjusted_x + cos_rad * adjusted_y
return int(qx),int(qy)
除此之外,有时当您旋转点时,您会得到负值(取决于旋转度数),在这种情况下,您需要将旋转的图像的高度和/或宽度添加到该值。在我的情况下,下面的图像是固定大小的 (416x416)
def cord_checker(pt1):
for item in pt1:
if item<0:
pt1[pt1.index(item)]=416+item
else: pass
return pt1
最后得到旋转点的坐标
pt1=tuple(cord_checker(list(rotate((xmi,ymi),origin=(0,0),degrees*=))))
*度数可以是 90,180 等
,如果图像以原点 (0,0) 为中心,您可以只翻转 x 坐标的符号进行水平翻转,或翻转 y 坐标的符号进行垂直翻转,同时保留原点为中心.
您还可以通过翻转标志来翻转任意图像:
# Horizontal flip
new_x = -x
new_y = y
# Vertical flip
new_x = x
new_y = -y
但中心坐标不会相同。如果您想要相同的中心坐标,则必须将其移回。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。