opencv转换颜色空间更改图片背景
技术  /  管理员 发布于 7年前   298
本文实例为大家分享了opencv转换颜色空间更改图片背景的具体代码,供大家参考,具体内容如下
思路:
1、将BGR转换为HSV颜色空间
2、设置掩模
3、位运算
这里以更改摩托罗拉logo背景为例,图片在必应图片搜索得知,具体代码如下:
import numpy as npimport cv2from imageio import imreadimport matplotlib.pyplot as pltdef show(img,winname = "img"): cv2.namedWindow(winname,cv2.WINDOW_GUI_NORMAL) cv2.imshow(winname,img) cv2.waitKey(0) cv2.destroyAllWindows()imgpath = r'motorola.jpg'img = imread(imgpath)img = cv2.cvtColor(img,cv2.COLOR_BGR2RGB)if img.shape == 4: img = img[:,:,:3]show(img)print(img.shape)bgd = np.ones(img.shape,dtype=np.uint8)bgd[:,:,:] = 255 #转换为白色背景show(bgd,"white")# 转换颜色空间hsv = cv2.cvtColor(img,cv2.COLOR_BGR2HSV)# show(hsv)# 绿色分量掩模,使用inRange函数# lowergreen = np.array([35,43,46],dtype = np.uint8)# uppergreen = np.array([77,255,255],dtype=np.uint8)# maskgreen = cv2.inRange(hsv,lowergreen,uppergreen)# show(maskgreen)# 蓝色分量掩模,使用inRange函数lowerblue = np.array([100,43,46],dtype = np.uint8)upperblue = np.array([124,255,255],dtype=np.uint8)maskblue = cv2.inRange(hsv, lowerblue, upperblue)maskblue_inv = cv2.bitwise_not(maskblue)show(maskblue,'maskblue')show(maskblue_inv,'maskblue_inv')# 腐蚀操作kernel_erode = np.ones((3,3),dtype = np.uint8)erode = cv2.erode(maskblue,kernel_erode)# 膨胀操作kernel_dilate = np.ones((5,5),np.uint8)dilate = cv2.dilate(erode, kernel = kernel_dilate)show(erode,'erode')# 前景色只留下蓝色字体部分fg = cv2.bitwise_and(img,img,mask = maskblue)show(fg,'fg')# 背景中除去蓝色字体部分bg = cv2.bitwise_and(bgd,bgd,mask = maskblue_inv)show(bg,'bg')# 前景色和背景色相加dst = cv2.add(bg,fg)show(dst,'dst')
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
122 在
学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..123 在
Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..原梓番博客 在
在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..博主 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..1111 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
Copyright·© 2019 侯体宗版权所有·
粤ICP备20027696号