OpenCV实战之AI照片背景替换

 更新时间:2022年01月08日 11:32:09   作者:顾木子吖  
不少人在生活中都有抠人像图换背景的需求。本文将为大家介绍一个更快的方法,即利用OpenCV实现AI照片背景替换,感兴趣的小伙伴可以试一试

导语

不少人在生活中都有抠人像图换背景的需求。那怎么抠图呢?

相信不少人第一时间就想到了 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吧!这个抠图效果其实比我代码更好 哈哈哈哈~

想用什么背景换什么背景

总结

好啦!整个抠图换背景的效果,你只需要掌握使用opencv,加上小小的【创意】,最后就能做出效果不错,又有实用的不同背景图来,赶快自己也来试试吧~

到此这篇关于OpenCV实战之AI照片背景替换的文章就介绍到这了,更多相关OpenCV照片背景替换内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python定时任务APScheduler原理及实例解析

    Python定时任务APScheduler原理及实例解析

    这篇文章主要介绍了Python定时任务APScheduler原理及实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-05-05
  • 用Python程序抓取网页的HTML信息的一个小实例

    用Python程序抓取网页的HTML信息的一个小实例

    这篇文章主要介绍了用Python程序抓取网页的HTML信息的一个小实例,用到的方法同时也是用Python编写爬虫的基础,需要的朋友可以参考下
    2015-05-05
  • Python中reset_index()函数的使用

    Python中reset_index()函数的使用

    本文主要介绍了Python中reset_index()函数的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-05-05
  • Python批量将csv文件转化成xml文件的实例

    Python批量将csv文件转化成xml文件的实例

    将 csv 格式转换成xml格式有许多方法,可以用数据库的方式,也有许多软件可以将 csv 转换成xml。但是比较麻烦,本文利用 Python 一键批量将 csv 文件转化成 xml 文件。
    2021-05-05
  • Python命令行参数解析模块getopt使用实例

    Python命令行参数解析模块getopt使用实例

    这篇文章主要介绍了Python命令行参数解析模块getopt使用实例,本文讲解了使用语法格式、短选项参数实例、长选项参数实例等内容,需要的朋友可以参考下
    2015-04-04
  • python矩阵/字典实现最短路径算法

    python矩阵/字典实现最短路径算法

    这篇文章主要为大家详细介绍了python矩阵/字典实现最短路径算法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-01-01
  • 探索Python Slice函数灵活而强大的序列切片技术

    探索Python Slice函数灵活而强大的序列切片技术

    Python中的Slice函数是一种强大且灵活的序列切片技术,用于从字符串、列表、元组等序列类型中提取子集,本文将深入研究Slice函数的功能和用法,提供详细的示例代码和解释,帮助读者更全面地了解和应用这一功能
    2024-01-01
  • 通过5个例子让你学会Pandas中的字符串过滤

    通过5个例子让你学会Pandas中的字符串过滤

    毋庸置疑Pandas是使用最广泛的Python库之一,它提供了许多功能和方法来执行有效的数据处理和数据分析,下面这篇文章主要给大家介绍了关于如何通过5个例子让你学会Pandas中字符串过滤的相关资料,需要的朋友可以参考下
    2022-08-08
  • 使用bandit对目标python代码进行安全函数扫描的案例分析

    使用bandit对目标python代码进行安全函数扫描的案例分析

    这篇文章主要介绍了使用bandit对目标python代码进行安全函数扫描,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-01-01
  • python中的pyc文件是什么

    python中的pyc文件是什么

    这篇文章主要介绍了python中的pyc文件是什么,pyc文件是Python编译过的字节码文件,这个字节码是一种低级的、与平台无关的代码,还不知道的朋友来了解一下吧
    2023-04-04

最新评论