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+图片旋转并用原底色填充新四角的例子就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • python:关于文件加载及处理方式

    python:关于文件加载及处理方式

    这篇文章主要介绍了python:关于文件加载及处理方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-09-09
  • Python requests模块session代码实例

    Python requests模块session代码实例

    这篇文章主要介绍了Python requests模块session代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-04-04
  • Python数据分析pandas模块用法实例详解

    Python数据分析pandas模块用法实例详解

    这篇文章主要介绍了Python数据分析pandas模块用法,结合实例形式分析了pandas模块对象创建、数值运算等相关操作技巧与注意事项,需要的朋友可以参考下
    2019-11-11
  • 基于PyQt5制作数据处理小工具

    基于PyQt5制作数据处理小工具

    这篇文章主要和大家介绍了如何利用Python中的PyQt5模块制作一个数据处理小工具,可以实现根据每个Excel数据文件里面的Sheet批量将数据文件合并成为一个汇总后的Excel数据文件,需要的可以参考一下
    2022-03-03
  • pygame可视化幸运大转盘实现

    pygame可视化幸运大转盘实现

    这篇文章主要介绍了pygame可视化幸运大转盘实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-04-04
  • Python中几种属性访问的区别与用法详解

    Python中几种属性访问的区别与用法详解

    这篇文章主要给大家介绍了关于Python中几种属性访问的区别和用法的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-10-10
  • Python设计模式之代理模式实例详解

    Python设计模式之代理模式实例详解

    这篇文章主要介绍了Python设计模式之代理模式,结合实例形式较为详细的分析了代理模式的概念、原理及Python定义、使用代理模式相关操作技巧,需要的朋友可以参考下
    2019-01-01
  • Python使用tarfile模块实现免费压缩解压

    Python使用tarfile模块实现免费压缩解压

    Python自带的tarfile模块可以方便读取tar归档文件,厉害的是可以处理使用gzip和bz2压缩归档文件tar.gz和tar.bz2,这篇文章主要介绍了Python使用tarfile模块实现免费压缩解压,需要的朋友可以参考下
    2024-03-03
  • python itchat实现微信自动回复的示例代码

    python itchat实现微信自动回复的示例代码

    本篇文章主要介绍了python itchat实现微信自动回复的示例代码,可以实现微信自动回复,有兴趣的可以了解一下
    2017-08-08
  • python 利用panda 实现列联表(交叉表)

    python 利用panda 实现列联表(交叉表)

    这篇文章主要介绍了python 利用panda 实现列联表(交叉表),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-02-02

最新评论