微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如果我在图像上有矩形,然后将图像旋转 90 度,那么矩形的新坐标是多少?

如何解决如果我在图像上有矩形,然后将图像旋转 90 度,那么矩形的新坐标是多少?

所以为了提供进一步的上下文,假设我有一个 200 像素 x 200 像素的图像,上面有一个矩形,下面是红色:

enter image description here

我知道图像的高度和宽度,矩形的坐标以及红色矩形的高度和宽度。

所以我需要知道的是,如果我翻转整个图像(包括矩形),有没有办法计算出红色矩形的新坐标?我想一定有某种公式或算法可以应用来获得这些新坐标。

解决方法

这已经在 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 举报,一经查实,本站将立刻删除。