日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢(xún)
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
使用Python在視頻上渲染文本

在本文中,我們將學(xué)習(xí)如何使用 python 在視頻中渲染響應(yīng)式文本,我們將使用 opencv 這個(gè)包,這是一個(gè)非常全面的計(jì)算機(jī)視覺(jué)處理庫(kù),會(huì)給我們的視頻圖像處理帶來(lái)極大的便利?,F(xiàn)在,讓我們通過(guò) pip 來(lái)進(jìn)行安裝。

pip install opencv-python

在我們需要使用 opencv 的時(shí)候,就可以像下面這樣來(lái)引用。

import cv2

現(xiàn)在讓我們進(jìn)入下一步,選擇一個(gè)視頻并導(dǎo)入到程序中。

第一步 —— 導(dǎo)入視頻

這將是一個(gè)簡(jiǎn)單的步驟。我們將做兩件事: 導(dǎo)入一個(gè)視頻和找到視頻的幀速率。我們將使用幀速率來(lái)計(jì)算視頻中的秒數(shù),這樣我們就可以計(jì)算不同文本的渲染時(shí)間。

我們使用 VideoCapture 方法導(dǎo)入視頻。

tree_video = cv2.VideoCapture('tree.mov')

現(xiàn)在我們來(lái)計(jì)算導(dǎo)入視頻的幀速率。

fps = tree_video.get(cv2.CAP_PROP_FPS)
print(fps)
#result
23.97

23.97!這意味著視頻基本上每秒運(yùn)行24幀,所以24次循環(huán)相當(dāng)于1秒的視頻。

第二步 —— 讀取文本文檔

在這一步中,我們將從文本文檔中讀取文本。我們將使用 open 函數(shù),它是 Python 附帶的一個(gè)內(nèi)置函數(shù)。下面是我將要導(dǎo)入的文本文檔的屏幕截圖。

確保每個(gè)句子都在新的一行上。在讀取文本文檔時(shí),我們將把每一行轉(zhuǎn)換為一個(gè)列表項(xiàng)。

poem = open('under_the_giant_tree.txt')
poem_lines = list(poem)
print(poem_lines)

第三步 —— 響應(yīng)式文字功能

在這一步中,我們將編寫(xiě)一個(gè)用于更新文本的函數(shù)。我決定根據(jù)不同的時(shí)間戳更新文本,但是可以隨意更改為不同的情況。

frame_ = 0
def text_update(frame_):
 if frames_ < (5*fps):
  text = str(poem_lines[2])
 elif frames_ < (10*fps):
  text = str(poem_lines[4])
 elif frames_ < (15*fps):
  text = str(poem_lines[6])
 elif frames_ < (20*fps):
  text = str(poem_lines[8])
 else:
  text = "no text found"
 return text

使用 if-else 來(lái)確定正在播放的視頻的時(shí)間戳。

定義一個(gè)名為“frame_”的新變量來(lái)傳入視頻幀。這樣可以以秒為單位計(jì)算持續(xù)時(shí)間。我們已經(jīng)知道從第一步開(kāi)始的每秒幀數(shù),即24幀每秒。在這個(gè)函數(shù)中,文本將每五秒更新一次。我將詩(shī)的行分配給 text 變量。

現(xiàn)在,讓我們進(jìn)入最后一步。

最后一步 —— 渲染視頻

太好了!我們快完成了。在最后一步,我們將把迄今為止所做的一切結(jié)合起來(lái)。我們將使用 while 循環(huán)來(lái)觸發(fā)程序。我們可以使用“ escape”或“ q”鍵結(jié)束循環(huán)。

while(True):
ret, frame = tree_video.read()
font = cv2.FONT_HERSHEY_SIMPLEX
on_video_text = text_update(frame_)
   
  cv2.putText(frame, on_video_text, (50, 50), font, 1, (0, 255, 255),
    2, cv2.LINE_4)
frame_ = frame_ + 1
cv2.imshow('poem on video', frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
    break
tree_video.release()
cv2.destroyAllWindows()

那么上面的代碼中發(fā)生了什么:

  • 我們首先從讀取視頻開(kāi)始的。
  • 然后定義我們想要用于文本的字體。
  • 然后使用 text_update 來(lái)更新文本。
  • 使用 putText 方法添加視頻響應(yīng)文本。
  • 使用 imshow 方法顯示視頻。

下面是我運(yùn)行程序后的截圖:

總結(jié)

恭喜!我們已經(jīng)學(xué)習(xí)了如何使用 Python 在視頻上呈現(xiàn)可更新的響應(yīng)文本。我希望你喜歡這個(gè)實(shí)際操作的計(jì)算機(jī)視覺(jué)項(xiàng)目。參與實(shí)際的編程項(xiàng)目是提高編程技能的最好方法。


新聞名稱(chēng):使用Python在視頻上渲染文本
標(biāo)題URL:http://www.5511xx.com/article/ccecojg.html