使用 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()

輸出

更新於: 2023年5月30日

1K+ 次檢視

開啟您的 職業生涯

透過完成課程獲得認證

立即開始
廣告