图像边框的实现

图像边框设计的主要函数

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"htmlcode">

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 图像边框(填充)添加及图像混合的实现方法(末尾实现类似幻灯片渐变的效果)

总结

广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!

《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线

暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。

艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。

《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。