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的设计模式编程入门指南
Apr 02 Python
在Python中操作日期和时间之gmtime()方法的使用
May 22 Python
Python入门之三角函数全解【收藏】
Nov 08 Python
Python实现霍夫圆和椭圆变换代码详解
Jan 12 Python
flask session组件的使用示例
Dec 25 Python
python实现K近邻回归,采用等权重和不等权重的方法
Jan 23 Python
用Q-learning算法实现自动走迷宫机器人的方法示例
Jun 03 Python
python,Django实现的淘宝客登录功能示例
Jun 12 Python
django认证系统 Authentication使用详解
Jul 22 Python
手机使用python操作图片文件(pydroid3)过程详解
Sep 25 Python
基于python实现可视化生成二维码工具
Jul 08 Python
Python first-order-model实现让照片动起来
Jun 25 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调用三种数据库的方法(1)
2006/10/09 PHP
谈谈新手如何学习PHP
2006/12/23 PHP
网页游戏开发入门教程三(简单程序应用)
2009/11/02 PHP
TMDPHP 模板引擎使用教程
2012/03/13 PHP
简单说说PHP优化那些事(经验分享)
2014/11/27 PHP
php冒泡排序与快速排序实例详解
2015/12/07 PHP
js自定义事件及事件交互原理概述(一)
2013/02/01 Javascript
jquery表单验证框架提供的身份证验证方法(示例代码)
2013/12/27 Javascript
js中的preventDefault与stopPropagation详解
2014/01/29 Javascript
基于javascript实现listbox左右移动
2016/01/29 Javascript
Fullpage.js固定导航栏-实现定位导航栏
2016/03/17 Javascript
Vue.js 2.0窥探之Virtual DOM到底是什么?
2017/02/10 Javascript
详解Node.js实现301、302重定向服务
2017/04/07 Javascript
vue2.0 实现页面导航提示引导的方法
2018/03/13 Javascript
深入浅析Vue中的slots/scoped slots
2018/04/03 Javascript
JavaScript实现的DOM绘制柱状图效果示例
2018/08/08 Javascript
vue项目搭建以及全家桶的使用详细教程(小结)
2018/12/19 Javascript
微信小程序如何实现在线客服功能
2019/10/16 Javascript
[01:24:09]Ti4 冒泡赛第二轮DK vs C9 1
2014/07/14 DOTA
[01:00:12]2018DOTA2亚洲邀请赛 4.7 淘汰赛 VP vs LGD 第一场
2018/04/09 DOTA
如何处理Python3.4 使用pymssql 乱码问题
2016/01/08 Python
python中list列表的高级函数
2016/05/17 Python
深入理解Python中的内置常量
2017/05/20 Python
pycharm修改文件的默认打开方式的步骤
2019/07/29 Python
树莓派4B安装Tensorflow的方法步骤
2020/07/16 Python
联想墨西哥官方网站:Lenovo墨西哥
2016/08/17 全球购物
党组织公开承诺书
2014/03/29 职场文书
公证书标准格式
2014/04/10 职场文书
食堂标语大全
2014/06/11 职场文书
精神文明建设标语
2014/06/16 职场文书
植物生产学专业求职信
2014/08/08 职场文书
四风剖析查摆对照检查材料思想汇报
2014/09/24 职场文书
2014年社区居委会主任重阳节讲话稿
2014/09/25 职场文书
办公室主任四风问题对照检查材料思想汇报
2014/09/28 职场文书
教师岗位职责
2015/02/03 职场文书
Android开发之WECHAT微信小程序路由跳转的两种形式
2022/04/12 Java/Android