opencv——几何变换_旋转_仿射

1、旋转

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

"""
 旋转
warpAffine(src, M, dsize[, dst[, flags[, borderMode[, borderValue]]]]) -> dst
    返回值:
        旋转操作后的图像
    参数解析:
        M:描述矩阵,使用函数getRotationMatrix2D(center, angle, scale) -> retval
            生成旋转描述矩阵
                参数解析:
                    center:中心点
                    angle:旋转角度(负数顺时针旋转,正数逆时针旋转)
                    scale:缩放因子

        dsize:输出图像的大小(宽,高)
        flags:插值方式有如下插值法可用
            cv.INTER_NEAREST  最邻近插值,将离新像素所在位置最近的像素像素值赋值给新像素
            cv.INTER_LINEAR  双线性插值, x、y方向临近像素取乘以相应权重并相加赋值给i新的像素值
            cv.INTER_CUBIC  双立方插值, 精度更高,计算量最大,取附近十六个点加权取像素值
            cv.INTER_LANCZOS4  附近像素及原像素加权取值
        borderModer:
            BORDER_CONSTANT = 0  以borderValue值填充边界
            BORDER_DEFAULT = 4   镜像填充
            BORDER_REFLECT = 2  镜像填充
            BORDER_REFLECT101 = 4  镜像填充
            BORDER_REPLICATE = 1  拉伸填充
            BORDER_TRANSPARENT = 5  暂时不知道
            BORDER_WRAP = 3  溢出填充
        borderValue:
            边界填充值
"""

import cv2 as cv
import numpy as np

# image_path = './test.png'
image_path = './Fig4.11(a).jpg'

img = cv.imread(image_path)
rows, cols = img.shape[:2]

# 的第一个参数为旋转中心 第二个为旋转角度
#  第三个为旋转后的缩放因子
# 可以通过设置旋转中心,缩放因子,以及窗口大小来防止旋转后超出边界的问题
M = cv.getRotationMatrix2D((cols / 2, rows / 2), -45, .6)

dst = cv.warpAffine(img, M, (cols, rows))

# 镜像填充
dst1 = cv.warpAffine(img, M, (cols, rows),
                     flags=cv.INTER_CUBIC,
                     borderMode=cv.BORDER_DEFAULT)
# 拉伸填充
dst2 = cv.warpAffine(img, M, (cols, rows),
                     flags=cv.INTER_CUBIC,
                     borderMode=cv.BORDER_REPLICATE)
# 溢出填
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值