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如何利用cv2.rectangle()绘制矩形框

    python如何利用cv2.rectangle()绘制矩形框

    cv2.rectangle这个函数的作用是在图像上绘制一个简单的矩形,下面这篇文章主要给大家介绍了关于python如何利用cv2.rectangle()绘制矩形框的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2022-12-12
  • python使用xlrd和xlwt读写Excel文件的实例代码

    python使用xlrd和xlwt读写Excel文件的实例代码

    这篇文章主要介绍了python使用xlrd和xlwt读写Excel文件的实例代码,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-09-09
  • python输出电脑上所有的串口名的方法

    python输出电脑上所有的串口名的方法

    今天小编就为大家分享一篇python输出电脑上所有的串口名的方法,具有好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-07-07
  • Python连接es笔记之创建和删除操作示例详解

    Python连接es笔记之创建和删除操作示例详解

    这篇文章主要为大家介绍了Python连接es笔记之创建和删除操作示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-05-05
  • Python可变参数*args和**kwargs

    Python可变参数*args和**kwargs

    本文我们将通过示例了解 Python函数的可变参数*args和 **kwargs的用法,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-03-03
  • Python3.7安装PyQt5 运行配置Pycharm的详细教程

    Python3.7安装PyQt5 运行配置Pycharm的详细教程

    这篇文章主要介绍了Python3.7成功安装心得PyQt5 PyQt5-tools QT designer.exe运行配置Pycharm 将.ui文件翻译成.py文件,本文给大家介绍的非常详细,需要的朋友可以参考下
    2020-10-10
  • Python实用技巧之列表、字典、集合中根据条件筛选数据详解

    Python实用技巧之列表、字典、集合中根据条件筛选数据详解

    这篇文章主要给大家介绍了关于Python技巧之在列表、字典、集合中根据条件筛选数据的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起看看吧
    2018-07-07
  • Python中的if、else、elif语句用法简明讲解

    Python中的if、else、elif语句用法简明讲解

    这篇文章主要介绍了Python中的if、else、elif语句的用法讲解,条件判断语句是程序中流程控制的基础办法之一,需要的朋友可以参考下
    2016-03-03
  • Python批量按比例缩小图片脚本分享

    Python批量按比例缩小图片脚本分享

    这篇文章主要介绍了Python批量按比例缩小图片脚本分享,本文直接给出实现代码,需要的朋友可以参考下
    2015-05-05
  • python实现周期方波信号频谱图

    python实现周期方波信号频谱图

    这篇文章主要介绍了python 周期方波信号频谱图,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-07-07

最新评论