使用 OpenCV Python 在视频中显示日期和时间

pythonserver side programmingprogramming

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[, thick[, 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
  
# 打开视频
video = cv2.VideoCapture('Videos/Flowers video.mp4')

while(video.isOpened()):
   ret, frame = video.read()
   if ret:
        # 描述字体类型
        font = cv2.FONT_HERSHEY_SIMPLEX
        
        # 获取当前日期和时间
        date_time = str(datetime.datetime.now())
        
        # 在视频帧中写入日期时间
        frame = cv2.putText(frame, date_time,(10, 100),font, 1,(210, 155, 155), 4, cv2.LINE_4)
        
        # 显示视频
        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()

    # 描述字体类型
    font = cv2.FONT_ITALIC
    
    # 在每一帧上写入当前日期和时间
    date_time = str(datetime.datetime.now())
    
    # 在视频帧中写入日期时间
    cv2.putText(frame,date_time,(10,100), font, 1,(0,0,255),2,cv2.LINE_AA)
    
    # 显示视频
    cv2.imshow('frame',frame)
    
    # 等待按键
    k = cv2.waitKey(10)
    if k == ord('q'):
      break
cap.release()
cv2.waitKey(0)
cv2.destroyAllWindows()

输出


相关文章