使用Python+OpenCV實(shí)現(xiàn)在視頻中某對(duì)象后添加圖像
為我們的計(jì)算機(jī)視覺項(xiàng)目制定實(shí)現(xiàn)計(jì)劃
在實(shí)施這個(gè)項(xiàng)目之前,我們先了解一下一個(gè)計(jì)算機(jī)視覺技術(shù):圖像掩碼。讓我給你看一些插圖來了解這項(xiàng)技術(shù)。
假設(shè)我們要在圖像(圖2)中放置一個(gè)矩形(圖1),使第二個(gè)圖像中的圓出現(xiàn)在矩形的頂部:
所以,期望的結(jié)果應(yīng)該是這樣的:
然而,這并不是那么簡單的。當(dāng)我們從圖1中選取矩形并將其插入圖2中時(shí),它將出現(xiàn)在粉色圓圈的頂部:
這不是我們想要的,圓圈應(yīng)該在矩形的前面。所以讓我們了解如何解決這個(gè)問題。
這些圖像本質(zhì)上是數(shù)組,這些數(shù)組的值是像素值,每種顏色都有自己的像素值。
因此,我們可以將矩形的像素值設(shè)置為1,在這里它應(yīng)該與圓重疊(在圖5中),同時(shí)保持矩形的其余像素值不變。
在圖6中,藍(lán)色虛線包圍的區(qū)域是我們放置矩形的區(qū)域,讓我們用R來表示這個(gè)區(qū)域。我們也將R的所有像素值設(shè)置為1,但是我們將保持整個(gè)粉色圓圈的像素值不變:
我們的下一步是將矩形的像素值與R的像素值相乘,因?yàn)槿魏螖?shù)字乘以1都會(huì)得到該數(shù)字本身,所以所有R的像素值都將被矩形的像素替換。
類似地,矩形的像素值1將被圖6的像素替換,最終的結(jié)果是這樣的:
這是我們將要使用的技術(shù),將OpenCV標(biāo)志嵌入到視頻中的背后原理。
在Python中實(shí)現(xiàn)這項(xiàng)技術(shù)
你可以使用Jupyter筆記本或任何你選擇的IDE,然后我們首先導(dǎo)入必要的庫。
導(dǎo)入庫
import cv2import reimport osimport randomimport numpy as npimport matplotlib.pyplot as pltfrom os.path import isfile, join
注意:本教程使用的OpenCV庫版本是4.0.0。
加載圖像
接下來,我們將指定保存logo和視頻的工作目錄路徑。請(qǐng)注意,你應(yīng)該在下面的代碼片段中指定“path”:
# 指定工作目錄的路徑path = ".../"
# 讀取logo圖像logo = cv2.imread(path+"opencv_logo.png")
# 讀取視頻的第一幀cap = cv2.VideoCapture(path+"Pexels Videos 2675513.mp4")ret, frame = cap.read()
至此我們已經(jīng)加載了logo圖像和視頻的第一幀,F(xiàn)在讓我們看看這些圖像或數(shù)組的形狀:
logo.shape, frame.shape
輸出:((240, 195, 3), (1080, 1920, 3))
兩個(gè)輸出都是三維的。第一個(gè)維度是圖像的高度,第二個(gè)維度是圖像的寬度,第三個(gè)維度是圖像中的通道數(shù),即藍(lán)色、綠色和紅色。

發(fā)表評(píng)論
請(qǐng)輸入評(píng)論內(nèi)容...
請(qǐng)輸入評(píng)論/評(píng)論長度6~500個(gè)字
最新活動(dòng)更多
-
7月22-29日立即報(bào)名>> 【線下論壇】第三屆安富利汽車生態(tài)圈峰會(huì)
-
7.30-8.1火熱報(bào)名中>> 全數(shù)會(huì)2025(第六屆)機(jī)器人及智能工廠展
-
7月31日免費(fèi)預(yù)約>> OFweek 2025具身智能機(jī)器人產(chǎn)業(yè)技術(shù)創(chuàng)新應(yīng)用論壇
-
免費(fèi)參會(huì)立即報(bào)名>> 7月30日- 8月1日 2025全數(shù)會(huì)工業(yè)芯片與傳感儀表展
-
即日-2025.8.1立即下載>> 《2024智能制造產(chǎn)業(yè)高端化、智能化、綠色化發(fā)展藍(lán)皮書》
-
8月5日立即報(bào)名>> 【在線會(huì)議】CAE優(yōu)化設(shè)計(jì):醫(yī)療器械設(shè)計(jì)的應(yīng)用案例與方案解析
推薦專題