python 读取rstp监控并将每帧转存为图片
代码如下
import cv2
import numpy as np
from datetime import datetime
import time
import os
# 禁用opencv的硬件加速
cv2.setNumThreads(0)
cv2.ocl.setUseOpenCL(False)
# RTSP URL,格式通常是 rtsp://username:password@ip_address:port/stream_path
rtsp_url = 'rtsp://admin:h2331172@192.168.12.82/doc/page/preview.asp'
# 使用cv2.VideoCapture打开RTSP流
cap = cv2.VideoCapture(rtsp_url)
# 增加缓冲区大小
cap.set(cv2.CAP_PROP_BUFFERSIZE, 10)
qrCodeDetector =cv2.QRCodeDetector()
# 视频信息获取
fps = cap.get(cv2.CAP_PROP_FPS)
width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
# 获取当前工作目录
current_dir = os.getcwd().replace(os.sep, '/')
print('current_dir:',current_dir)
# 使用os.path.join构建保存路径和文件名
save_directory = current_dir + '/images/'
print('save_directory:',save_directory)
if not os.path.exists(save_directory):
os.makedirs(save_directory)
#当前时间
start_time = time.time()
if not cap.isOpened():
print("Error: Cannot open video source")
exit()
while True:
ret, frame = cap.read()
if not ret:
print("Error: Cannot receive frame")
break
# ①显示帧 cv2.imread支持读取静态图片
#show_image=cv2.imshow('IP Camera', frame)
# ②对帧进行处理,例如转换为灰度图
gray_frame = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
show_image=cv2.imshow('Frame', gray_frame)
#③ 对帧进行图片存储
# 获取当前日期和时间
now = datetime.now()
# 格式化日期和时间
formatted_time = now.strftime('%Y%m%d%H%M%S')
(frameState, frame) = cap.read() # 记录每帧及获取状态
fileName =str(formatted_time)+'.jpg' # 存储路径
save_path = os.path.join(save_directory, fileName)
if frameState == True:
cv2.imwrite(save_path,frame,[cv2.IMWRITE_JPEG_QUALITY,100])
print(fileName+" successfully write in "+save_path) # 输出存储状态
# 按'q'退出
if cv2.waitKey(1) & 0xFF == ord('q'):
break
# 释放资源和关闭窗口
cap.release()
cv2.destroyAllWindows()
如果您觉得此文章可以帮得到你,可以打赏作者!!
