python opencv 图像边框(填充)添加及图像混合的实现方法(末尾实现类似幻灯片渐变的效果)


Posted in Python onMarch 09, 2020

图像边框的实现

图像边框设计的主要函数

cv.copyMakeBorder()——实现边框填充
主要参数如下:

  • 参数一:源图像——如:读取的img
  • 参数二——参数五分别是:上下左右边的宽度——单位:像素
  • 参数六:边框类型:
  • cv.BORDER_CONSTANT——cv.BORDER_REPLICATE——cv.BORDER_REFLECT——cv.BORDER_WRAP——cv.BORDER_REFLECT_101——cv.BORDER_TRANSPARENT——cv.BORDER_REFLECT101——cv.BORDER_DEFAULT——cv.BORDER_ISOLATED
  • 参数七——只在边框类型选择borderType == BORDER_CONSTANT,才设置,意为边框值

边框类型的说明:

  • BORDER_CONSTANT:意为添加指定颜色的边框——由value值确定:为list
  • 其它参数:(可根据需要调制,不过一般前两个用的多一些)

代码实例

import cv2 as cv
import numpy as np
if __name__ == "__main__":
 img = cv.imread('./imag_in_save/open_class.png')
 cv.namedWindow('imag', cv.WINDOW_NORMAL)
 cv.resizeWindow('imag', 500, 500)
 img = cv.copyMakeBorder(img, 20, 20, 20, 20, cv.BORDER_CONSTANT, value=[2, 83, 13]) # 添加边框
 cv.imshow('imag', img)
 cv.waitKey(0)
 cv.destroyAllWindows()

效果

python opencv 图像边框(填充)添加及图像混合的实现方法(末尾实现类似幻灯片渐变的效果)

图像混合的实现

图像混合实现的主要函数

cv.addWeighted()——实现图像的混合
它的工作原理采用的是一个简单权重公式:g(x)=(1−α)f0(x)+αf1(x)

  • 第一个参数为一张图象,紧跟着第二个参数为第一张图片的权重(0~1)也就是公式里的(1 - α)
  • 第三个参数为另一张需要混合的图片,同样的,第四个参数为这张图片的权重,也就是公式里的(α)
  • 至于第五个参数:每个对应标量的和值——可以设置混合的高光
  • 其它两个参数:(最后的一个参数单独用的不是很多,在一些其他处理中用的比较多)
  • dst 输出数组,其大小和通道数与输入数组相同(我们一般通过直接返回得到~)
  • dtype 输出数组的可选深度;当两个输入数组的深度相同时,可以将dtype设置为-1,这等效于src1.depth()

代码实例

import cv2 as cv
import numpy as np


if __name__ == "__main__":
 img1 = cv.imread(r'./2.png', 1) # 读取彩色图片
 img2 = cv.imread(r'./3.png', 1)
 cv.namedWindow('imag', cv.WINDOW_NORMAL) # 窗体
 img1 = img1[0: 200, 0: 400] # 截取图像的指定部分——因为图像混合需要等大的图像
 img2 = img2[0: 200, 0: 400]
 img = cv.addWeighted(img1, 0.7, img2, 0.3, 0) # 混合图片——根据权重

 while True:
 cv.imshow('imag', img) # 显示当前序列号图片
 k = cv.waitKey(0) & 0xFF
 if k == 27:
  break
 cv.destroyAllWindows()

效果

python opencv 图像边框(填充)添加及图像混合的实现方法(末尾实现类似幻灯片渐变的效果)

小练习(产生类似幻灯片渐变的效果)

主要思路

  • 首先准备好一系列等大的图片或者截取一系列相同大小的图片区域作为我们的图像数据
  • 然后将图像信息,分别拼接到一个list列表中
  • 然后,实现一张一张图片的显示,在交换的间隙,实现渐变的效果——也就是图像混合。
  • 然后就可以欣赏了——不过效果的话,主要看设置的参数吧(当然因为没有渲染,可能还是有些僵硬)。

代码示例

我把主要注释放在代码中,边看边理解应该不难~

import cv2 as cv
import numpy as np

if __name__ == "__main__":
 img_list = [] # 创建一个空序列装准备显示的一系列图片
 counts = 0 # 显示图片的序号
 cv.namedWindow('imag', cv.WINDOW_NORMAL) # 窗体
 cv.resizeWindow('imag', 500, 500)
 for i in range(2, 7): # 遍历图片,凭借到空数组中——一共5张
 img = cv.imread(f'./imag_in_save/scr/{i}.png') # 用f""实现参数传入
 img = img[0: 200, 0: 400] # 截取图像的指定部分——因为图像混合需要等大的图像
 img_list.append(img) # 实现图片添加
 while True:
 cv.imshow('imag', img_list[counts]) # 显示当前序列号图片
 k = cv.waitKey(2000) & 0xFF
 counts += 1 # 循环下一张图片——0,1,2,3,4有效
 if counts == 5: # 循环到最后一张图片后返回到第一张图片
  counts = 0
 for i in range(0, 10):
  k_f = cv.addWeighted(img_list[counts - 1], 1 - (i * 0.1), img_list[counts], i * 0.1, 0) # 做类似渐变的图像合成
  # 实现两张(当前图片和接下来显示的图片)图片,不同权重的混合——由于照片权重改变来实现渐变
  cv.imshow('imag', k_f) # 显示混合的图片
  k = cv.waitKey(120) & 0xFF # 延时和按键读取
  if k == 27: # ESC键
  break
 if k == 27:
  break
 cv.destroyAllWindows()

效果(图片可能不是很明显,如有需要可以自己添置几张图片实现看看)

python opencv 图像边框(填充)添加及图像混合的实现方法(末尾实现类似幻灯片渐变的效果)
python opencv 图像边框(填充)添加及图像混合的实现方法(末尾实现类似幻灯片渐变的效果)

python opencv 图像边框(填充)添加及图像混合的实现方法(末尾实现类似幻灯片渐变的效果)

总结

到此这篇关于python opencv 图像边框(填充)添加及图像混合(末尾实现类似幻灯片渐变的效果)的文章就介绍到这了,更多相关opencv 图像边框填充混合内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python标准库之Sys模块使用详解
May 23 Python
Python实现批量下载图片的方法
Jul 08 Python
ansible作为python模块库使用的方法实例
Jan 17 Python
Python中如何优雅的合并两个字典(dict)方法示例
Aug 09 Python
Python实现希尔排序算法的原理与用法实例分析
Nov 23 Python
对变量赋值的理解--Pyton中让两个值互换的实现方法
Nov 29 Python
Python 的AES加密与解密实现
Jul 09 Python
Python实现把类当做字典来访问
Dec 16 Python
python 类之间的参数传递方式
Dec 20 Python
pytorch实现线性拟合方式
Jan 15 Python
Xadmin+rules实现多选行权限方式(级联效果)
Apr 07 Python
如何利用Python matplotlib绘制雷达图
Dec 21 Python
Python Opencv 通过轨迹(跟踪)栏实现更改整张图像的背景颜色
Mar 09 #Python
pycharm实现在虚拟环境中引入别人的项目
Mar 09 #Python
Python 面向对象静态方法、类方法、属性方法知识点小结
Mar 09 #Python
python微信公众号开发简单流程实现
Mar 09 #Python
Python 面向对象部分知识点小结
Mar 09 #Python
Django跨域资源共享问题(推荐)
Mar 09 #Python
python为Django项目上的每个应用程序创建不同的自定义404页面(最佳答案)
Mar 09 #Python
You might like
php实现执行某一操作时弹出确认、取消对话框
2013/12/30 PHP
PHP结合jQuery.autocomplete插件实现输入自动完成提示的功能
2015/04/27 PHP
Jquery+WebService 校验账号是否已被注册的代码
2010/07/12 Javascript
in.js 一个轻量级的JavaScript颗粒化模块加载和依赖关系管理解决方案
2011/07/26 Javascript
DWZ table的原生分页浅谈
2013/03/01 Javascript
jQuery源码解读之addClass()方法分析
2015/02/20 Javascript
使用 JavaScript 进行函数式编程 (一) 翻译
2015/10/02 Javascript
javascript实现五星评分功能
2015/11/10 Javascript
浅析jQuery Ajax通用js封装
2016/06/22 Javascript
JS数组交集、并集、差集的示例代码
2017/08/23 Javascript
seajs模块压缩问题与解决方法实例分析
2017/10/10 Javascript
解决Vue2.0 watch对象属性变化监听不到的问题
2018/09/11 Javascript
WebGL three.js学习笔记之阴影与实现物体的动画效果
2019/04/25 Javascript
webpack的tree shaking的实现方法
2019/09/18 Javascript
关于vue 结合原生js 解决echarts resize问题
2020/07/26 Javascript
[03:03]DOTA2校园争霸赛 济南城市决赛欢乐发奖活动
2013/10/21 DOTA
Python3搜索及替换文件中文本的方法
2015/05/22 Python
python实现发送和获取手机短信验证码
2016/01/15 Python
windows及linux环境下永久修改pip镜像源的方法
2016/11/28 Python
用django-allauth实现第三方登录的示例代码
2019/06/24 Python
在Django下创建项目以及设置settings.py教程
2019/12/03 Python
pytorch自定义二值化网络层方式
2020/01/07 Python
JAVA SWT事件四种写法实例解析
2020/06/05 Python
基于logstash实现日志文件同步elasticsearch
2020/08/06 Python
使用CSS3的背景渐变Text Gradient 创建文字颜色渐变
2014/08/19 HTML / CSS
高中政治教学反思
2014/01/18 职场文书
教师专业自荐书范文
2014/02/10 职场文书
企业诚信承诺书
2014/05/23 职场文书
2014年六一儿童节演讲稿
2014/05/23 职场文书
文明城市标语
2014/06/16 职场文书
行政专员岗位职责说明书
2014/09/01 职场文书
2014年庆祝国庆65周年演讲稿
2014/09/21 职场文书
欢迎新生标语
2014/10/06 职场文书
财务审计整改报告
2014/11/06 职场文书
同学会感言
2015/07/30 职场文书
python_tkinter事件类型详情
2022/03/20 Python