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