訂閱
糾錯
加入自媒體

使用Python+OpenCV實現(xiàn)在視頻中某對象后添加圖像

為我們的計算機視覺項目制定實現(xiàn)計劃

在實施這個項目之前,我們先了解一下一個計算機視覺技術(shù):圖像掩碼。讓我給你看一些插圖來了解這項技術(shù)。

假設(shè)我們要在圖像(圖2)中放置一個矩形(圖1),使第二個圖像中的圓出現(xiàn)在矩形的頂部:

使用Python+OpenCV實現(xiàn)在視頻中某對象后添加圖像

所以,期望的結(jié)果應(yīng)該是這樣的:

使用Python+OpenCV實現(xiàn)在視頻中某對象后添加圖像

然而,這并不是那么簡單的。當(dāng)我們從圖1中選取矩形并將其插入圖2中時,它將出現(xiàn)在粉色圓圈的頂部:

使用Python+OpenCV實現(xiàn)在視頻中某對象后添加圖像

這不是我們想要的,圓圈應(yīng)該在矩形的前面。所以讓我們了解如何解決這個問題。

這些圖像本質(zhì)上是數(shù)組,這些數(shù)組的值是像素值,每種顏色都有自己的像素值。

因此,我們可以將矩形的像素值設(shè)置為1,在這里它應(yīng)該與圓重疊(在圖5中),同時保持矩形的其余像素值不變。

在圖6中,藍(lán)色虛線包圍的區(qū)域是我們放置矩形的區(qū)域,讓我們用R來表示這個區(qū)域。我們也將R的所有像素值設(shè)置為1,但是我們將保持整個粉色圓圈的像素值不變:

使用Python+OpenCV實現(xiàn)在視頻中某對象后添加圖像

我們的下一步是將矩形的像素值與R的像素值相乘,因為任何數(shù)字乘以1都會得到該數(shù)字本身,所以所有R的像素值都將被矩形的像素替換。

類似地,矩形的像素值1將被圖6的像素替換,最終的結(jié)果是這樣的:

使用Python+OpenCV實現(xiàn)在視頻中某對象后添加圖像

這是我們將要使用的技術(shù),將OpenCV標(biāo)志嵌入到視頻中的背后原理。

在Python中實現(xiàn)這項技術(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和視頻的工作目錄路徑。請注意,你應(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))

兩個輸出都是三維的。第一個維度是圖像的高度,第二個維度是圖像的寬度,第三個維度是圖像中的通道數(shù),即藍(lán)色、綠色和紅色。

<上一頁  1  2  3  4  下一頁>  
聲明: 本文由入駐維科號的作者撰寫,觀點僅代表作者本人,不代表OFweek立場。如有侵權(quán)或其他問題,請聯(lián)系舉報。

發(fā)表評論

0條評論,0人參與

請輸入評論內(nèi)容...

請輸入評論/評論長度6~500個字

您提交的評論過于頻繁,請輸入驗證碼繼續(xù)

暫無評論

暫無評論

人工智能 獵頭職位 更多
掃碼關(guān)注公眾號
OFweek人工智能網(wǎng)
獲取更多精彩內(nèi)容
文章糾錯
x
*文字標(biāo)題:
*糾錯內(nèi)容:
聯(lián)系郵箱:
*驗 證 碼:

粵公網(wǎng)安備 44030502002758號