python 图像的旋转与仿射变换

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:边界填充值
    原文作者:2lzm333
    原文地址: https://blog.csdn.net/qq_35498696/article/details/107074330
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞