python ggplot,python cv2 opencv 圖片旋轉

 2023-11-19 阅读 38 评论 0

摘要:import cv2 import numpy as npdef opencv_rotate(img, angle):"""圖片旋轉,默認應該是逆時針轉動:param img::param angle::return:"""h, w = img.shape[:2] # 圖像的(行數,列數,色彩通道數)borderValue 
import cv2
import numpy as npdef opencv_rotate(img, angle):"""圖片旋轉,默認應該是逆時針轉動:param img::param angle::return:"""h, w = img.shape[:2]  # 圖像的(行數,列數,色彩通道數)borderValue = (0, 0, 0, 0)# 顏色空間轉換?if img.shape[-1] == 3:img = cv2.cvtColor(img, cv2.COLOR_BGR2BGRA)elif img.shape[-1] == 1:img = cv2.cvtColor(img, cv2.COLOR_GRAY2BGR)center = (w / 2, h / 2)scale = 1.0# 2.1獲取M矩陣"""M矩陣[cosA -sinA (1-cosA)*centerX+sinA*centerYsinA cosA  -sinA*centerX+(1-cosA)*centerY]"""# cv2.getRotationMatrix2D(獲得仿射變化矩陣)M = cv2.getRotationMatrix2D(center, angle, scale)# 2.2 新的寬高,radians(angle) 把角度轉為弧度 sin(弧度)new_H = int(w * np.fabs(np.sin(np.radians(angle))) + h * np.fabs(np.cos(np.radians(angle))))new_W = int(h * np.fabs(np.sin(np.radians(angle))) + w * np.fabs(np.cos(np.radians(angle))))# 2.3 平移M[0, 2] += (new_W - w) / 2M[1, 2] += (new_H - h) / 2# cv2.warpAffine(進行仿射變化)rotate = cv2.warpAffine(img, M, (new_W, new_H), borderValue=borderValue)return rotateif __name__ == "__main__":img = cv2.imread('./xiaowei.png')# 顯示圖片查看# cv2.imshow('imshow', img)# cv2.waitKey(1)# cv2.destroyAllWindows()# 顯示圖片查看angle = -45res = opencv_rotate(img, angle)cv2.imwrite('./after.png', res)# print(f"res = {res}")

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://808629.com/184622.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 86后生记录生活 Inc. 保留所有权利。

底部版权信息