python中图像绕中心旋转

ss2ws0br  于 2022-12-21  发布在  Python
关注(0)|答案(1)|浏览(228)

本作业的答案如下:围绕图像的中心(即坐标(100,100)的点)旋转图像,Angular θ在范围[10,80]内均匀采样。
我试着实现我的函数,但是如果我试着旋转图像,我会发现一个错误的结果,我找不到错误在哪里。如果我把图像旋转180度(只为了了解它是否有效)而且我总是得到错误的结果。wrong resul另一个问题是,当我调用函数时,图像中每个小方块的亮度都被衰减了,为什么?

fd3cxomn

fd3cxomn1#

我猜你一定想了解图像旋转的实现方法,所以你可以参考下面的链接了解实现方法:image affine: rotate
代码片段:

# affine
def affine(img, a, b, c, d, tx, ty):
    H, W, C = _img.shape

    # temporary image
    img = np.zeros((H+2, W+2, C), dtype=np.float32)
    img[1:H+1, 1:W+1] = _img

    # get shape of new image
    H_new = np.round(H).astype(np.int)
    W_new = np.round(W).astype(np.int)
    out = np.zeros((H_new, W_new, C), dtype=np.float32)

    # get position of new image
    x_new = np.tile(np.arange(W_new), (H_new, 1))
    y_new = np.arange(H_new).repeat(W_new).reshape(H_new, -1)

    # get position of original image by affine
    adbc = a * d - b * c
    x = np.round((d * x_new  - b * y_new) / adbc).astype(np.int) - tx + 1
    y = np.round((-c * x_new + a * y_new) / adbc).astype(np.int) - ty + 1

    # adjust center by affine
    dcx = (x.max() + x.min()) // 2 - W // 2
    dcy = (y.max() + y.min()) // 2 - H // 2

    x -= dcx
    y -= dcy

    x = np.clip(x, 0, W + 1)
    y = np.clip(y, 0, H + 1)

    # assign pixcel
    out[y_new, x_new] = img[y, x]
    out = out.astype(np.uint8)

    return out

我没有直接回答你的问题,但是也许你可以在上面的代码中找到答案。

相关问题