Python+OpenCV+图片旋转并用原底色填充新四角的例子

 更新时间:2019年12月12日 15:59:25   作者:默盒  
今天小编就为大家分享一篇Python+OpenCV+图片旋转并用原底色填充新四角的例子,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

我就废话不多说了,直接上代码吧!

import cv2
from math import fabs, sin, cos, radians
import numpy as np
from scipy.stats import mode


def get_img_rot_broa(img, degree=45, filled_color=-1):
 """
 Desciption:
  Get img rotated a certain degree,
 and use some color to fill 4 corners of the new img.
 """

 # 获取旋转后4角的填充色
 if filled_color == -1:
 filled_color = mode([img[0, 0], img[0, -1],
    img[-1, 0], img[-1, -1]]).mode[0]
 if np.array(filled_color).shape[0] == 2:
 if isinstance(filled_color, int):
  filled_color = (filled_color, filled_color, filled_color)
 else:
 filled_color = tuple([int(i) for i in filled_color])

 height, width = img.shape[:2]

 # 旋转后的尺寸
 height_new = int(width * fabs(sin(radians(degree))) +
   height * fabs(cos(radians(degree))))
 width_new = int(height * fabs(sin(radians(degree))) +
   width * fabs(cos(radians(degree))))

 mat_rotation = cv2.getRotationMatrix2D((width / 2, height / 2), degree, 1)

 mat_rotation[0, 2] += (width_new - width) / 2
 mat_rotation[1, 2] += (height_new - height) / 2

 # Pay attention to the type of elements of filler_color, which should be
 # the int in pure python, instead of those in numpy.
 img_rotated = cv2.warpAffine(img, mat_rotation, (width_new, height_new),
     borderValue=filled_color)
 # 填充四个角
 mask = np.zeros((height_new + 2, width_new + 2), np.uint8)
 mask[:] = 0
 seed_points = [(0, 0), (0, height_new - 1), (width_new - 1, 0),
   (width_new - 1, height_new - 1)]
 for i in seed_points:
 cv2.floodFill(img_rotated, mask, i, filled_color)

 return img_rotated

以上这篇Python+OpenCV+图片旋转并用原底色填充新四角的例子就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • pytorch点乘与叉乘示例讲解

    pytorch点乘与叉乘示例讲解

    今天小编就为大家分享一篇pytorch点乘与叉乘示例讲解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-12-12
  • 基于Python实现二维图像双线性插值

    基于Python实现二维图像双线性插值

    双线性插值,又称为双线性内插。在数学上,双线性插值是有两个变量的插值函数的线性插值扩展,其核心思想是在两个方向分别进行一次线性插值。本文将用Python实现二维图像双线性插值,感兴趣的可以了解下
    2022-06-06
  • Django框架ORM数据库操作实例详解

    Django框架ORM数据库操作实例详解

    这篇文章主要介绍了Django框架ORM数据库操作,结合实例形式详细分析了Django框架ORM数据库基本增删改查与相关函数使用技巧,需要的朋友可以参考下
    2019-11-11
  • Python安装与卸载流程详细步骤(图解)

    Python安装与卸载流程详细步骤(图解)

    这篇文章主要介绍了Python环境的安装与卸载流程,本文分步骤通过图文并茂的形式给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-02-02
  • python help函数实例用法

    python help函数实例用法

    在本篇文章里小编给大家整理了关于python help函数实例用法及相关实例,需要的朋友们可以学习下。
    2020-12-12
  • Python使用type动态创建类操作示例

    Python使用type动态创建类操作示例

    这篇文章主要介绍了Python使用type动态创建类操作,结合实例形式详细分析了Python使用type动态创建类的具体原理、实现方法与操作注意事项,需要的朋友可以参考下
    2020-02-02
  • Python深度学习pytorch神经网络多层感知机简洁实现

    Python深度学习pytorch神经网络多层感知机简洁实现

    这篇文章主要为大家讲解了Python深层学习中pytorch神经网络多层感知机的简洁实现方式,有需要的朋友可以借鉴参考下,希望能够有所帮助
    2021-10-10
  • Python入门教程(十七)Python的While循环

    Python入门教程(十七)Python的While循环

    这篇文章主要介绍了Python入门教程(十七)Python的While循环,Python是一门非常强大好用的语言,也有着易上手的特性,本文为入门教程,需要的朋友可以参考下
    2023-04-04
  • 对TensorFlow中的variables_to_restore函数详解

    对TensorFlow中的variables_to_restore函数详解

    今天小编就为大家分享一篇对TensorFlow中的variables_to_restore函数详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-07-07
  • python中的__init__ 、__new__、__call__小结

    python中的__init__ 、__new__、__call__小结

    这篇文章主要介绍了python中的__init__ 、__new__、__call__小结,需要的朋友可以参考下
    2014-04-04

最新评论