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


Posted in Python onDecember 12, 2019

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

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装饰器的函数式编程详解
Feb 27 Python
python类:class创建、数据方法属性及访问控制详解
Jul 25 Python
python使用fork实现守护进程的方法
Nov 16 Python
Python实现图片尺寸缩放脚本
Mar 10 Python
解决pip install的时候报错timed out的问题
Jun 12 Python
Scrapy使用的基本流程与实例讲解
Oct 21 Python
解决python xlrd无法读取excel文件的问题
Dec 25 Python
Python3 列表,数组,矩阵的相互转换的方法示例
Aug 05 Python
Python编译为二进制so可执行文件实例
Dec 23 Python
Python多分支if语句的使用
Sep 03 Python
在 Python 中使用 7zip 备份文件的操作
Dec 11 Python
python+opencv实现目标跟踪过程
Jun 21 Python
Python+OpenCV 实现图片无损旋转90°且无黑边
Dec 12 #Python
使用python去除图片白色像素的实例
Dec 12 #Python
用Python去除图像的黑色或白色背景实例
Dec 12 #Python
python 实现将小图片放到另一个较大的白色或黑色背景图片中
Dec 12 #Python
flask的orm框架SQLAlchemy查询实现解析
Dec 12 #Python
python实现批量处理将图片粘贴到另一张图片上并保存
Dec 12 #Python
Python FtpLib模块应用操作详解
Dec 12 #Python
You might like
UCenter Home二次开发指南
2009/05/28 PHP
上传文件先创建目录 再上传到目录里面去
2010/12/29 PHP
最新版本PHP 7 vs HHVM 多角度比较
2016/02/14 PHP
PHP版微信小店接口开发实例
2016/11/12 PHP
PHPExcel中文帮助手册|PHPExcel使用方法(分享)
2017/06/09 PHP
PHP生成加减算法方式的验证码实例
2018/03/12 PHP
从零开始学习jQuery (四) jQuery中操作元素的属性与样式
2011/02/23 Javascript
使用javascript过滤html的字符串(注释标记法)
2013/07/08 Javascript
js实现文件上传表单域美化特效
2015/11/02 Javascript
AngularJs Understanding the Controller Component
2016/09/02 Javascript
微信和qq时间格式模板实例详解
2016/10/21 Javascript
SpringMVC+bootstrap table实例详解
2017/06/02 Javascript
详解js跨域请求的两种方式,支持post请求
2018/05/05 Javascript
js指定日期增加指定月份的实现方法
2018/12/19 Javascript
微信小程序视图控件与bindtap之间的问题的解决
2019/04/08 Javascript
Vue实现兄弟组件间的联动效果
2020/01/21 Javascript
TypeScript 运行时类型检查补充工具
2020/09/28 Javascript
微信小程序实现购物车小功能
2020/12/30 Javascript
Python中获取网页状态码的两个方法
2014/11/03 Python
python删除过期文件的方法
2015/05/29 Python
Python中一行和多行import模块问题
2018/04/01 Python
Python PyAutoGUI模块控制鼠标和键盘实现自动化任务详解
2018/09/04 Python
python正则表达式去除两个特殊字符间的内容方法
2018/12/24 Python
Python 转换RGB颜色值的示例代码
2019/10/13 Python
Python 字符串处理特殊空格\xc2\xa0\t\n Non-breaking space
2020/02/23 Python
amazeui页面分析之登录页面的示例代码
2020/08/25 HTML / CSS
美国隐形眼镜网:Major Lens
2018/02/09 全球购物
Dr. Martens马汀博士法国官网:马丁靴鼻祖
2020/01/15 全球购物
Kappa英国官方在线商店:服装和运动器材
2020/11/22 全球购物
开朗女孩的自我评价
2014/02/10 职场文书
物流管理专业自荐信
2014/06/23 职场文书
班主任与学生安全责任书
2014/07/25 职场文书
党员批评与自我批评范文
2014/09/23 职场文书
离婚协议书怎么写2014
2014/09/30 职场文书
高三语文复习计划
2015/01/19 职场文书
接触艺术对孩子学习思维有益
2019/08/06 职场文书