python代码实现,需要输入原图片和旋转角度。
def rotate(img, angle):#输入原图片和需要旋转的角度 # 旋转图片 (h, w) = img.shape[:2] # 获得图片高,宽 center = (w // 2, h // 2) # 获得图片中心点 #求旋转矩阵 img_ratete = cv2.getRotationMatrix2D(center, angle, 1) #求旋转图片 rotated = cv2.warpAffine(img, img_ratete, (w, h)) return rotated主要用到了opencv自带的两个函数: 1、主要用于获得图像绕着某一点的旋转矩阵 。
c++ : Mat cv::getRotationMatrix2D(Point2f center, double angle, double scale) python: cv2.getRotationMatrix2D(center,angle,scale) 参数详解: Point2f center:表示旋转的中心点 double angle:表示旋转的角度 double scale:图像缩放因子2、仿射变换,warpAffine可以实现一些简单的重映射。
cpp c++:void cv::warpAffine(InputArray src, OutputArray dst, InputArray M, Size dsize, int flags = INTER_LINEAR, int borderMode = BORDER_CONSTANT, const Scalar &borderValue = Scalar() ) python:cv2.warpAffine(img,M,(rows,cols),flags=cv2.INTER_,borderMode=cv2.BORDER_REFLECT,borderValue=(255,255,255)) src: 输入图像 dst: 输出图像,尺寸由dsize指定,图像类型与原图像一致 M: 变换矩阵 dsize: 指定图像输出尺寸 flags: 插值算法标识符,有默认值INTER_LINEAR,如果插值算法为WARP_INVERSE_MAP, warpAffine函数使用如下矩阵进行图像转换 borderMode: 边界像素模式 borderValue:边界填充值