使用 OpenCV Python 在影片中顯示日期和時間
OpenCV 是一個基於 Python 的開源計算機視覺庫。它提供了許多函式來執行各種影像和影片處理操作。該庫使用 Python 的 NumPy 模組將所有影片或影像陣列表示為 ndarray 型別。它需要 NumPy 庫,我們需要確保 NumPy 模組也安裝在我們的 Python 直譯器中。
使用 OpenCV 顯示影片中的日期和時間
在即時流/影片處理應用程式中,有時我們需要在影片上顯示日期和時間。為了實現這一點,我們可以使用 Python 的 datetime 模組。
Python 的 datetime 模組用於處理日期和時間,它具有各種類和函式以多種格式操作或表示日期和時間。在本文中,我們將學習如何使用 OpenCV Python 在影片中顯示日期和時間。
OpenCV 提供了一個名為 cv2.putText() 的方法。它用於在影像或影片幀中寫入文字字串,這將是此任務的主要函式。
語法
cv.putText(img, text, org, fontFace, fontScale, color[, thickness[, lineType[, bottomLeftOrigin]]])
其中,
img:輸入影像/幀。
Text:要繪製的文字字串。
org:兩個座標值的元組,即 (X 座標值,Y 座標值)。
fontFace:它指定字型型別。支援的字型型別為
FONT_HERSHEY_SIMPLEX
FONT_HERSHEY_PLAIN
FONT_HERSHEY_DUPLEX
FONT_HERSHEY_COMPLEX
FONT_HERSHEY_TRIPLEX
FONT_HERSHEY_COMPLEX_SMALL
FONT_HERSHEY_SCRIPT_SIMPLEX
FONT_HERSHEY_SCRIPT_COMPLEX
FONT_ITALIC
fontScale:字型縮放因子,乘以特定於字型的基本大小。它用於增大/減小文字的大小。
color:用於指定文字的顏色。它以 BGR 格式取值。
thickness(可選):它指定用於繪製文字的線條的粗細。預設值為 1。
lineType(可選):它指定我們想要使用的線條型別。可用的 4 種線條型別為:
FILLED
LINE_4
LINE_8(預設)
LINE_AA
LeftOrigin(可選):預設值為 False。將文字放置在影像的左上角。
方法
使用 cv2.VideoCapture() 函式開啟攝像頭或讀取輸入影片檔案。
使用 video_obj.read() 函式獲取每一幀。
使用 cv2.putText() 函式在每一幀上寫入當前日期時間。
最後,使用 cv2.imshow() 顯示每一幀。
要關閉,請分別使用 video_obj.release() 和 cv2.destroyAllWindows() 函式釋放網路攝像頭並銷燬所有視窗。
使用影片檔案
透過將影片檔案位置指定給 cv2.VideoCapture() 函式,它將讀取影片檔案資料。
示例
在此示例中,我們將在影片上顯示當前日期和時間。
import numpy import cv2 import datetime # open the video video = cv2.VideoCapture('Videos/Flowers video.mp4') while(video.isOpened()): ret, frame = video.read() if ret: # describe the font type font = cv2.FONT_HERSHEY_SIMPLEX # Get current date and time date_time = str(datetime.datetime.now()) # write the date time in the video frame frame = cv2.putText(frame, date_time,(10, 100),font, 1,(210, 155, 155), 4, cv2.LINE_4) # show the video cv2.imshow('frame', frame) key = cv2.waitKey(10) if key == ord('q'): break else: break video.release() cv2.destroyAllWindows()
輸出
我們已成功在影片輸出上顯示了當前日期時間。
使用即時影片素材
我們將在捕獲的即時素材上顯示當前日期時間。
示例
在此示例中,我們將使用 OpenCV Python 在即時影片中顯示日期和時間。
import cv2 import datetime cap = cv2.VideoCapture(0) while True: ret, frame = cap.read() # describe the font type font = cv2.FONT_ITALIC # write current Date & Time on each frame date_time = str(datetime.datetime.now()) # write the date time in the video frame cv2.putText(frame,date_time,(10,100), font, 1,(0,0,255),2,cv2.LINE_AA) # show the video cv2.imshow('frame',frame) # wait for keypress k = cv2.waitKey(10) if k == ord('q'): break cap.release() cv2.waitKey(0) cv2.destroyAllWindows()