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

极客笔记