python打出由边框包围的_python opencv 图像边框(填充)添加及图像混合的实现方法(末尾实现类似幻灯片渐变的效果)...
图像边框的实现
图像边框设计的主要函数
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()
效果
图像混合的实现
图像混合实现的主要函数
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()
效果
小练习(产生类似幻灯片渐变的效果)
主要思路
首先准备好一系列等大的图片或者截取一系列相同大小的图片区域作为我们的图像数据
然后将图像信息,分别拼接到一个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 图像边框(填充)添加及图像混合(末尾实现类似幻灯片渐变的效果)的文章就介绍到这了,更多相关opencv 图像边框填充混合内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
python打出由边框包围的_python opencv 图像边框(填充)添加及图像混合的实现方法(末尾实现类似幻灯片渐变的效果)...相关推荐
- python图片保存为txt文件_python + opencv实现提取png图像的像素信息并存储到txt文件中(附安装指导)...
相关库安装指导: 这里我们需要 opencv_python,numpy,matplotlib库,另外我用的是python3.6.1版本. 一般库大家都是用pip install命令安装的,不过不知道为 ...
- python二维码识别读取_python+opencv检测图片中二维码
缘起 需要检测发票中二维码的位置,以确定图像该怎么旋转,同时也可以为提取二维码信息创造先觉条件!(万恶的需求!) 失败的尝试--opencv训练大法 不感兴趣的可跳过不看! 解释:原文作者是训练检测舌 ...
- python更改图片中物体的颜色_Python Opencv提取图片中某种颜色组成的图形的方法...
Python Opencv提取图片中某种颜色组成的图形的方法 主要目标识别图中红色的裂缝,尝试了几种不同的方法,最后发现比较每一点的RGB差值可以很好的解决这个问题,也就是提取图片中的红色相关信息.处 ...
- python 读取图片成为一维数组_python+opencv 图像的数组和矩阵操作
在调用opencv的imread函数读取图像时,我们得到的其实是一个类型为numpy.ndarray的n维数组.这个数组的维度是[height,width,3],它是由每个像素的RGB通道的灰度值组成 ...
- 给图片加边框源代码c语言,OpenCV实现给图片添加边框功能
目标: 基于OpenCV的函数cv::copyMakeBorder给图像添加边框 函数简介: copyMakeBorder( src, dst, top, bottom, left, right, b ...
- python打出由边框包围的_python – 提取边框并将其保存为图像
假设你有以下图像: 现在我想提取每个独立字母的个人图像,为了这个任务,我已经恢复了轮廓,然后绘制了一个边框,在这种情况下为字符'a': 之后,我想提取每个框(在这种情况下为字母'a'),并将其保存到图 ...
- python车牌识别系统开源代码_python+opencv实现车牌定位功能(实例代码)
写在前面 HIT大三上学期视听觉信号处理课程中视觉部分的实验三,经过和学长们实验的对比发现每一级实验要求都不一样,因此这里标明了是2019年秋季学期的视觉实验三. 由于时间紧张,代码没有进行任何优化, ...
- python将图像转换为8位单通道_Python OpenCV读取16位单通道图像并转换为8位灰度图显示...
语义.实例分割数据集的标注图像以及一些深度图像等都是由单通道16位整型图像存储的,我们通常需要读取这种图像并显示出来,由于OpenCV一般只能够对8位图像进行显示,也就是像素范围在0-255的图像,而 ...
- python数字图像处理、色彩空间类型转换_Python+OpenCV图像处理—— 色彩空间转换...
一.色彩空间的转换 代码如下: #色彩空间转换 import cv2 as cv def color_space_demo(img): gray = cv.cvtColor(img, cv.COLOR ...
最新文章
- 平面上给定n条线段,找出一个点,使这个点到这n条线段的距离和最小。
- PHP新手上路(十二)
- 贾跃亭画了一个8500亿的大饼
- 从傅里叶(Fourier)变换到伽柏(Gabor)变换再到小波(Wavelet)变换
- [Leedcode][JAVA][第892题][图形题]
- 基于余弦相似性的指纹匹配算法在WIFI室内定位上的应用(转)
- 随手记_ubuntu下配置vscode+cmake c++开发环境
- 语音识别基本原理介绍之gmm-hmm续
- 2022最新黑马程序员大数据Hadoop入门
- 悦保OCR识别,提供票据、卡证、保险场景识别新方案
- TCP协议之《ACK pingpong交互模式详解》
- 计算机专业就业尴尬问题,计算机专业就业困境初探
- 全网最详细elasticsearch7.10.2安装手册
- C语言之stroke_s()
- 看过来,u盘删除的文件还能找回吗?两种方法教给你
- android区域和gynoid区域,Roux-en-Y胃肠转流术后2型糖尿病患者体脂分泌和胰岛素抵抗的变化...
- Shell脚本案例:实现局域网扫描功能
- 龙芯3A4000服务器部署kvm虚拟机指导
- 8月12日科技资讯|今日头条搜索网页版上线;华为筹建中国开源基金;Racket v7.4 发布
- win10 家庭版 多语言包 安装
热门文章
- 实战03_SSM整合ActiveMQ支持多种类型消息
- 递归(特别重要,小计算用)
- Java-增强for循环
- java 发送邮件_Jenkins实现自动化邮件发送踩坑记录
- xbox one s驱动_续航800公里 体验6座SUV理想ONE
- 计算机组成原理第八章课后答案6,计算机组成原理 第八章 复习
- qt中QList使用removeAt()删除元素
- java怎么弄redis,java怎么使用redis
- python下标从0开始_从零学Python之入门(三)序列
- java boolean是什么_java中的boolean与Boolean有什么不同