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函数中参数的使用及默认参数的陷阱
Mar 13 Python
Python反射的用法实例分析
Feb 11 Python
python 编码规范整理
May 05 Python
Python中的几种矩阵乘法(小结)
Jul 10 Python
给你一面国旗 教你用python画中国国旗
Sep 24 Python
python飞机大战 pygame游戏创建快速入门详解
Dec 17 Python
python wav模块获取采样率 采样点声道量化位数(实例代码)
Jan 22 Python
python对XML文件的操作实现代码
Mar 27 Python
PyQt5实现登录页面
May 30 Python
解决Pycharm 中遇到Unresolved reference 'sklearn'的问题
Jul 13 Python
Node.js 和 Python之间该选择哪个?
Aug 05 Python
基于python爬取链家二手房信息代码示例
Oct 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
MySql 按时间段查询数据方法(实例说明)
2008/11/02 PHP
php下批量挂马和批量清马代码
2011/02/27 PHP
PHP curl模拟浏览器采集阿里巴巴的实现代码
2011/04/20 PHP
PHP、Nginx、Apache中禁止网页被iframe引用的方法
2020/10/01 PHP
php读取文件内容到数组的方法
2015/03/16 PHP
ThinkPHP打水印及设置水印位置的方法
2016/10/14 PHP
PHP实现无限极分类的两种方式示例【递归和引用方式】
2019/03/25 PHP
Prototype Class对象学习
2009/07/19 Javascript
js判断当前浏览器类型,判断IE浏览器方法
2014/06/02 Javascript
在Node.js应用中读写Redis数据库的简单方法
2015/06/30 Javascript
jquery代码实现多选、不同分享功能
2015/07/31 Javascript
jQuery实现漂亮实用的商品图片tips提示框效果(无图片箭头+阴影)
2016/04/16 Javascript
node.js爬虫爬取拉勾网职位信息
2017/03/14 Javascript
vue实现百度搜索下拉提示功能实例
2017/06/14 Javascript
react-router4按需加载(踩坑填坑)
2019/01/06 Javascript
vue项目创建并引入饿了么elementUI组件的步骤
2019/04/11 Javascript
Vue双向绑定实现原理与方法详解
2020/05/07 Javascript
Python yield使用方法示例
2013/12/04 Python
Python random模块(获取随机数)常用方法和使用例子
2014/05/13 Python
对python中if语句的真假判断实例详解
2019/02/18 Python
python调用pyaudio使用麦克风录制wav声音文件的教程
2019/06/26 Python
在python里面运用多继承方法详解
2019/07/01 Python
Python多线程通信queue队列用法实例分析
2020/03/24 Python
Python+Kepler.gl实现时间轮播地图过程解析
2020/07/20 Python
python开根号实例讲解
2020/08/30 Python
瑞典首都斯德哥尔摩的多元奢侈时尚品牌:Acne Studios
2017/07/09 全球购物
中国一家专注拼团的社交购物网站:拼多多
2018/06/13 全球购物
100%有机精油,美容油:House of Pure Essence
2018/10/30 全球购物
.NET程序员的几道面试题
2012/06/01 面试题
中医专业职业生涯规划书范文
2014/01/04 职场文书
高中生家长寄语大全
2014/04/03 职场文书
干部选拔任用方案
2014/05/26 职场文书
工程技术负责人岗位职责
2015/04/13 职场文书
2015年外贸业务员工作总结范文
2015/05/23 职场文书
关于童年的读书笔记
2015/06/26 职场文书
MySQL系列之开篇 MySQL关系型数据库基础概念
2021/07/02 MySQL