有很多方法可以使用OpenCV或PIL将img旋转90度,如何在不使用任何库的情况下通过自行设计代码来实现? 我试过旋转矩阵,但RGB元素使它失败
答案 0 :(得分:0)
答案 1 :(得分:0)
您可以通过换位和反射的组合将像素网格旋转90°。您可以使用zip
进行转置,并使用reversed
进行转置,从而在纯Python中执行此操作。
这是一个简短的演示,顺时针旋转90°。
# Some fake pixels
data = [
[(100, 101, 102), (105, 106, 107), (110, 111, 112), (115, 116, 117)],
[(120, 121, 122), (125, 126, 127), (130, 131, 132), (135, 136, 137)],
[(140, 141, 142), (145, 146, 147), (150, 151, 152), (155, 156, 157)],
[(160, 161, 162), (165, 166, 167), (170, 171, 172), (175, 176, 177)],
[(180, 181, 182), (185, 186, 187), (190, 191, 192), (195, 196, 197)],
]
new = [list(reversed(t)) for t in zip(*data)]
for row in new:
print(row)
<强>输出强>
[(180, 181, 182), (160, 161, 162), (140, 141, 142), (120, 121, 122), (100, 101, 102)]
[(185, 186, 187), (165, 166, 167), (145, 146, 147), (125, 126, 127), (105, 106, 107)]
[(190, 191, 192), (170, 171, 172), (150, 151, 152), (130, 131, 132), (110, 111, 112)]
[(195, 196, 197), (175, 176, 177), (155, 156, 157), (135, 136, 137), (115, 116, 117)]
但严重的是,除了图像非常小之外,用图书馆做这种事情更快(更简单)。如果您不想使用PIL,可以使用Numpy。