OpenCV实战之AI照片背景替换
作者:顾木子吖 发布时间:2022-06-11 06:58:09
标签:OpenCV,照片,背景替换
导语
不少人在生活中都有抠人像图换背景的需求。那怎么抠图呢?
相信不少人第一时间就想到了 PS 抠图 * ,为了学会 PS 抠图很多人还花费不少精力,而且学会后大家想必都有共同感触:PS 抠图在制作抠图选区这个步骤太耗费时间!!就跟我减肥似的!
今天木木子就手把手教大家编写一款抠图人像技术——
这款小程序实现一键智能抠取人像图的功能,非常强大!
比 PS 慢慢抠图效率可提升了太多了,而且还能让不会 PS 的群体也能轻松学会抠人像图。
吹了这么多,让我们正式开始开始敲代码吧!
我知道看到这篇文章标题,有的吃瓜群众会八卦:哎呀,那个朋友结婚啊……
写这篇文章的灵感主要是来源于上个月底结婚的那两个人:
带着这一份感动,小编之制作了「空中的和平鸽」的背景,祝二人百年好合~
那是怎么达到这个一键抠图换背景的呢?
1)附主程序
# 日常缩放
rows, cols, channels = img_back.shape
img_back = cv2.resize(img_back, None, fx=0.7, fy=0.7)
cv2.imshow('img_back', img_back)
rows, cols, channels = img.shape
img = cv2.resize(img, None, fx=0.4, fy=0.4)
cv2.imshow('img', img)
rows, cols, channels = img.shape # rows,cols最后一定要是前景图片的,后面遍历图片需要用到
# 转换hsv
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
# 获取mask
lower_blue = np.array([78, 43, 46])
upper_blue = np.array([110, 255, 255])
mask = cv2.inRange(hsv, lower_blue, upper_blue)
cv2.imshow('Mask', mask)
# 腐蚀膨胀
erode = cv2.erode(mask, None, iterations=1)
cv2.imshow('erode', erode)
dilate = cv2.dilate(erode, None, iterations=1)
cv2.imshow('dilate', dilate)
# 遍历替换
center = [50, 50] # 在新背景图片中的位置
for i in range(rows):
for j in range(cols):
if dilate[i, j] == 0: # 0代表黑色的点
img_back[center[0] + i, center[1] + j] = img[i, j] # 此处替换颜色,为BGR通道
cv2.imshow('res', img_back)
cv2.waitKey(0)
cv2.destroyAllWindows()
好啦!上面的抠图换背景就是这个代码的效果滴!
2)展示其他
那我们来看看我最近一直在用的另外一个抠图app吧!这个抠图效果其实比我代码更好 哈哈哈哈~
2.1 我不说那张是原图——你能猜出来嘛?
2.2 从漫画走进现实
2.3 想用什么背景换什么背景
来源:https://blog.csdn.net/weixin_55822277/article/details/120777875
0
投稿
猜你喜欢
- 最近用python的正则表达式处理了一些文本数据,需要把结果写到文件里面,但是由于文件比较大,所以运行起来花费的时间很长。但是打开任务管理器
- 创建一个名为templatetags的python module。新建一个名为verbose_name.py的文件。from django
- 由以下函数代替该功能:def cv_imread(file_path): cv_img=cv2.imdecode(np.fromfile(f
- 网上有很多关于Python+opencv人脸检测的例子,并大都附有源程序。但是在实际使用时依然会遇到这样或者那样的问题,在这里给出常见的两种
- FTP即文件传输协议;它基于客户机-服务器模型体系结构,应用广泛。它有两个通道:一个命令通道和一个数据通道。命令通道用于控制通信,数据通道用
- 本文实例讲述了Python 25行代码实现的RSA算法。分享给大家供大家参考,具体如下:网络上很多关于RSA算法的原理介绍,但是翻来翻去就是
- 1、Windows上anaconda安装配置mmdetection环境稍后再写2、将anaconda环境离线移植到另一台电脑首先将anaco
- 最近使用Python 3.5写了一个GUI小程序,于是想将该写好的程序发布成一个exe文件,供自己单独使用。至于通过安装的方式使用该程序,我
- 前言事情是这样的马上就快到毕业季了,大四的学姐们快要离校了你心中那个没有说出口的学姐,你还记得吗跟着博主,用pygame给你心中那个学姐做一
- 介绍兄弟们,这个是正经的教程,不要拿来乱用,可以自己用自己的电脑或者手机试,但是别搞别人,懂的都懂!本文思路1.通过opencv调用摄像头拍
- Python标准库中的BaseHTTPServer模块实现了一个基础的HTTP服务器基类和HTTP请求处理类。这在文章python探索之Ba
- 1、后单下划线例如: data_其实这种就是为了防止跟系统关键字重名了,比如 python 里是不是有个关键字 class但是我也想用 cl
- 一、需求说明需要使用Python实现将内容转为base64编码,解码,方便后续的数据操作。二、base64简介Base64是一种二进制到文本
- 为了保证程序的健壮性与容错性,即在遇到错误时候程序不会崩溃,我们需要对异常进行处理,1.if进行处理,在错误发生之前进行预防如果错误发生的条
- 一、介绍实现的是把某个文件夹下的所有文件名提取出来,放入一个列表,在与excel中的某列进行对比,如果一致的话,对另一列进行操作,比如我们在
- PHP 中的 Interface 是一种非常重要的特性,它允许开发人员定义一组规范或者约束,以确保类之间的互操作性和兼容性。在本文中,我们将
- jupyter notebook的安装在这里都不赘述可以参考jupyter官网的步骤http://jupyter-notebook.read
- 本文实例讲述了python使用wxPython打开并播放wav文件的方法。分享给大家供大家参考。具体实现方法如下:''
- asp读取access数据库表名称的代码:<%strConn="DBQ="+server.mappath(&quo
- 本文实例讲述了python 实现的发送邮件模板。分享给大家供大家参考,具体如下:##发送普通txt文件(与发送html邮件不同的是邮件内容设