图片旋转变换之后坐标变换

1、备注:

用于旋转之后的图片的坐标点重计算

可以计算不同旋转中心、不同旋转后图片大小的变换

2、代码

# 输入: 
    point:原图当中坐标点
    w: 原图宽
    h:原图高
    angle:旋转角度,逆时针方向
    rate:原图在变换过程中的缩放比例
    nw:变换后图片的宽
    nh:变换后图片的高
# 输出变换后图片当中的坐标点

def calculatePoint(point,w,h,rate,nw,nh):
    #计算原图当中的旋转中心,并将之设为原图当中的原点
    cx=w//2
    cy=h//2
    # 计算基于新的原点的坐标,图片当中的默认坐标原点是左上
    new_center_x = point[0]-cx
    new_center_y = cy-point[1]
    # 计算当前点到新的原点,也就是旋转中心的距离
    lenth_p = math.sqrt(pow(new_center_x,2)+pow(new_center_y,2))
    # 在原图当中,坐标点与旋转中心连线与x轴正向的夹角
    origin_angle=math.degrees(math.atan2(new_center_y,new_center_x))
    # 旋转一定角度之后,坐标点与旋转中心连线与x轴正向的夹角
    new_angle=origin_angle+angle
    #方便计算,把角度转为正负180度
    if new_angle>180:
        new_angle-=360
    # 原图如果发生缩放,在原图当中的直线也发生缩放
    lenth_p =lenth_p*rate
    # 使用角度与边长,计算到x轴和y轴的距离
    new_x = math.cos(math.radians(new_angle)) * lenth_p
    new_y = math.sin(math.radians(new_angle)) * lenth_p
    #将坐标轴从旋转中心换回左上
    new_cx=nw//2
    new_cy=nh//2
    nx=int(new_x+new_cx)
    ny=int(new_cy-new_y)
    return nx,ny

3、变换后效果

选择区域:嘴唇

猜你喜欢

转载自blog.csdn.net/Diana_Z/article/details/84571572
今日推荐