OpenCV實(shí)戰(zhàn)之AI照片背景替換
導(dǎo)語
不少人在生活中都有摳人像圖換背景的需求。那怎么摳圖呢?
相信不少人第一時間就想到了 PS 摳圖大法,為了學(xué)會 PS 摳圖很多人還花費(fèi)不少精力,而且學(xué)會后大家想必都有共同感觸:PS 摳圖在制作摳圖選區(qū)這個步驟太耗費(fèi)時間!!就跟我減肥似的!

今天木木子就手把手教大家編寫一款摳圖人像技術(shù)——
這款小程序?qū)崿F(xiàn)一鍵智能摳取人像圖的功能,非常強(qiáng)大!
比 PS 慢慢摳圖效率可提升了太多了,而且還能讓不會 PS 的群體也能輕松學(xué)會摳人像圖。
吹了這么多,讓我們正式開始開始敲代碼吧!
正文
那是怎么達(dá)到這個一鍵摳圖換背景的呢?
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最后一定要是前景圖片的,后面遍歷圖片需要用到
# 轉(zhuǎn)換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代表黑色的點(diǎn)
img_back[center[0] + i, center[1] + j] = img[i, j] # 此處替換顏色,為BGR通道
cv2.imshow('res', img_back)
cv2.waitKey(0)
cv2.destroyAllWindows()好啦!上面的摳圖換背景就是這個代碼的效果滴!
2)展示其他
那我們來看看我最近一直在用的另外一個摳圖app吧!這個摳圖效果其實(shí)比我代碼更好 哈哈哈哈~
想用什么背景換什么背景

總結(jié)
好啦!整個摳圖換背景的效果,你只需要掌握使用opencv,加上小小的【創(chuàng)意】,最后就能做出效果不錯,又有實(shí)用的不同背景圖來,趕快自己也來試試吧~
到此這篇關(guān)于OpenCV實(shí)戰(zhàn)之AI照片背景替換的文章就介紹到這了,更多相關(guān)OpenCV照片背景替換內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python定時任務(wù)APScheduler原理及實(shí)例解析
這篇文章主要介紹了Python定時任務(wù)APScheduler原理及實(shí)例解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-05-05
用Python程序抓取網(wǎng)頁的HTML信息的一個小實(shí)例
這篇文章主要介紹了用Python程序抓取網(wǎng)頁的HTML信息的一個小實(shí)例,用到的方法同時也是用Python編寫爬蟲的基礎(chǔ),需要的朋友可以參考下2015-05-05
Python中reset_index()函數(shù)的使用
本文主要介紹了Python中reset_index()函數(shù)的使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-05-05
Python批量將csv文件轉(zhuǎn)化成xml文件的實(shí)例
將 csv 格式轉(zhuǎn)換成xml格式有許多方法,可以用數(shù)據(jù)庫的方式,也有許多軟件可以將 csv 轉(zhuǎn)換成xml。但是比較麻煩,本文利用 Python 一鍵批量將 csv 文件轉(zhuǎn)化成 xml 文件。2021-05-05
Python命令行參數(shù)解析模塊getopt使用實(shí)例
這篇文章主要介紹了Python命令行參數(shù)解析模塊getopt使用實(shí)例,本文講解了使用語法格式、短選項(xiàng)參數(shù)實(shí)例、長選項(xiàng)參數(shù)實(shí)例等內(nèi)容,需要的朋友可以參考下2015-04-04
python矩陣/字典實(shí)現(xiàn)最短路徑算法
這篇文章主要為大家詳細(xì)介紹了python矩陣/字典實(shí)現(xiàn)最短路徑算法,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-01-01
探索Python?Slice函數(shù)靈活而強(qiáng)大的序列切片技術(shù)
Python中的Slice函數(shù)是一種強(qiáng)大且靈活的序列切片技術(shù),用于從字符串、列表、元組等序列類型中提取子集,本文將深入研究Slice函數(shù)的功能和用法,提供詳細(xì)的示例代碼和解釋,幫助讀者更全面地了解和應(yīng)用這一功能2024-01-01
使用bandit對目標(biāo)python代碼進(jìn)行安全函數(shù)掃描的案例分析
這篇文章主要介紹了使用bandit對目標(biāo)python代碼進(jìn)行安全函數(shù)掃描,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-01-01

