python opencv图片旋转180度_图像旋转90/180 opencv坐标系

本文介绍了一种使用 OpenCV 和 Python 实现图像旋转的方法,并详细解释了如何通过调整像素坐标来实现图像逆时针旋转90度的效果。文章提供了一个具体的代码示例,包括创建和应用重映射地图的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题描述:

图像旋转90、180、270等

使用类似下面的代码,会有黑边,图像变形之类的问题

209352291_1_20201208070120462.png

其实windows系统自带类似的功能,但是我需要批量处理图像,因此尝试自己写

算法基础:

这种直角的旋转,个人理解不涉及到一些插值的东西,只是像素坐标变换

示例图图像:

209352291_2_20201208070120556

逆时针旋转90度:

209352291_3_20201208070120681

计算好旋转后各像素点的位置,映射过去就行

就像图像中黄色的点,逆时针旋转90度之后是图像的原点

opencv python(numpy)实现:import cv2

import numpy as np

def main():

# 1.随机创建图片

img_src = cv2.imread(r'11.jpg')

height, width = img_src.shape[:2]

print("img width:%d height:%d" % (width, height))

# 2.创建X,Y map

map_x = np.zeros([width, height], np.float32)

map_y = np.zeros([width, height], np.float32)

# 3.执行重映射 调整 X Y map位置

for i in range(width):

for j in range(height):

map_x.itemset((i, j), i)#width -1 - i

map_y.itemset((i, j), j)

# 4.执行重映射处理

img_dst = cv2.remap(img_src, map_x, map_y, cv2.INTER_LINEAR)

# 5.显示结果

cv2.imwrite("qqq\img_yes_1_1_0_1.jpg", img_dst)

cv2.waitKey()

cv2.destroyAllWindows()

if __name__ == '__main__':

main()

记不住在哪抄的了,个人觉得这个代码写的真是不错,有水平很python,简洁

这段代码跑出来是照着对角线旋转,如果想逆时针90度需要将map_x.itemset((i, j), i) 改为map_x.itemset((width - 1 - i, j), i),要怎么旋转全看这个位置

结果:

209352291_4_20201208070120916

209352291_5_20201208070121103

opencv C 实现:https://www.icode9.com/content-4-779201.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值