使用Python+OpenCV實現(xiàn)在視頻中某對象后添加圖像
下面是根據(jù)HSV圖像準備的掩碼,黃色區(qū)域中的所有像素的像素值為255,其余像素值為0:
現(xiàn)在,我們可以根據(jù)需要輕松地將綠色虛線框內(nèi)的像素值設(shè)置為1,讓我們回到代碼中:
# HSV的范圍lower = np.a(chǎn)rray([6,10,68])upper = np.a(chǎn)rray([30,36,122])
# 為圖像創(chuàng)建核kernel = np.ones((3,3),np.uint8)
# 每次運行以下while循環(huán)時,執(zhí)行下面的兩行cap = cv2.VideoCapture(path+"Pexels Videos 2675513.mp4")cnt = 0
# 循環(huán)加載、預(yù)處理和顯示幀while(True): ret, f = cap.read()
# 提取我們將放置logo的區(qū)域 # 此區(qū)域的尺寸應(yīng)與logo的尺寸相匹配 mini_frame = f[500:740,875:1070,:]
# 創(chuàng)建 HSV 圖像 hsv = cv2.cvtColor(f, cv2.COLOR_BGR2HSV)
# 創(chuàng)建掩碼 mask = cv2.inRange(hsv, lower, upper)
dil = cv2.dilate(mask,kernel,iterations = 5)
# 創(chuàng)建3個通道 mini_dil = np.zeros_like(mini_frame) mini_dil[:,:,0] = dil[500:740,875:1070] mini_dil[:,:,1] = dil[500:740,875:1070] mini_dil[:,:,2] = dil[500:740,875:1070]
# 復(fù)制logo圖像 logo_copy = logo.copy()
# 當掩碼的像素值為0時,將像素值設(shè)置為1 logo_copy[mini_dil == 0] = 1
# 將標識的像素值設(shè)置為1,其中標識的像素值為0 logo_copy[logo == 0] = 1
# 當logo的像素值不為1時,將像素值設(shè)置為1 mini_frame[logo_copy 。 1] = 1
# 合并圖像(數(shù)組乘法) mini_frame = mini_frame*logo_copy
# 在框架中插入logo f[500:740,875:1070,:] = mini_frame
# 調(diào)整框架的大。ǹ蛇x) f = cv2.resize(f, (480, 270), interpolation = cv2.INTER_AREA)
# 顯示幀 cv2.imshow('frame', f)
# 保存幀 # cv2.imwrite(path+'frames/'+str(cnt)+'.png',f) cnt+= 1
if cv2.waitKey(20) & 0xFF == ord('q'): cv2.destroyAllWindows() break
上面的代碼片段將從視頻中加載幀,對其進行預(yù)處理,并創(chuàng)建HSV圖像和掩碼,最后將logo插入到視頻中。你完成了!
結(jié)尾
在本文中,我們介紹了一個非常有趣的計算機視覺用例,并從零開始實現(xiàn)它。在此過程中,我們還學習了如何使用圖像數(shù)組以及如何從這些數(shù)組中創(chuàng)建掩碼。
當你處理其他的計算機視覺任務(wù)時,這會對你有所幫助。

請輸入評論內(nèi)容...
請輸入評論/評論長度6~500個字
最新活動更多
推薦專題
- 1 UALink規(guī)范發(fā)布:挑戰(zhàn)英偉達AI統(tǒng)治的開始
- 2 北電數(shù)智主辦酒仙橋論壇,探索AI產(chǎn)業(yè)發(fā)展新路徑
- 3 降薪、加班、裁員三重暴擊,“AI四小龍”已折戟兩家
- 4 “AI寒武紀”爆發(fā)至今,五類新物種登上歷史舞臺
- 5 國產(chǎn)智駕迎戰(zhàn)特斯拉FSD,AI含量差幾何?
- 6 光計算迎來商業(yè)化突破,但落地仍需時間
- 7 東陽光:2024年扭虧、一季度凈利大增,液冷疊加具身智能打開成長空間
- 8 地平線自動駕駛方案解讀
- 9 封殺AI“照騙”,“淘寶們”終于不忍了?
- 10 優(yōu)必選:營收大增主靠小件,虧損繼續(xù)又逢關(guān)稅,能否乘機器人東風翻身?