导入库
pip install opencv-python
代码
'''
Opencv-python读取IP摄像头视频流
pip install opencv-python
'''
import cv2
import datetime
import time
class Camera_picture:
def __init__(self):
self.user = "admin"
self.pwd = "123456"
self.ip = "192.168.100.108:554"
self.file_path = "./"
self.name = "camera"
def dahua(self):
video_stream_path = f"rtsp://{self.user}:{self.pwd}@{self.ip}/cam/realmonitor?channel=1&subtype=0"
cap = cv2.VideoCapture(video_stream_path)
print('IP摄像头是否开启: {}'.format(cap.isOpened()))
return cap
def timing_screenshot(self):
'''定时截图'''
cap = self.dahua()
if cap.isOpened():
cv2.namedWindow(self.name, flags=cv2.WINDOW_FREERATIO)
last_time = datetime.datetime.now()
while(True):
ret, frame = cap.read()
frame = cv2.resize(frame, (500, 300))
cv2.imshow(self.name, frame)
cur_time = datetime.datetime.now()
name = self.file_path + str(time.time()) + ".jpg"
if (cur_time - last_time).seconds >= 10:
cv2.imwrite(name, cap.read()[1])
last_time = cur_time
print("画面保存成功")
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
else:
print("摄像头连接失败,请检查配置")
def manual_screenshot(self):
'''手动截图'''
cap = self.dahua()
if cap.isOpened():
cv2.namedWindow(self.name, flags=cv2.WINDOW_FREERATIO)
while(True):
ret, frame = cap.read()
frame = cv2.resize(frame, (500, 300))
cv2.imshow(self.name, frame)
event = cv2.waitKey(1) & 0xFF
if event == ord('s'):
name = self.file_path + str(time.time()) + ".jpg"
cv2.imwrite(name, cap.read()[1])
print("画面保存成功")
elif event == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
else:
print("摄像头连接失败,请检查配置")
def get_video_stream(self):
'''获取视频流'''
cap = self.dahua()
if cap.isOpened():
width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
fps = cap.get(cv2.CAP_PROP_FPS)
fourcc = cv2.VideoWriter_fourcc(*"MJPG")
writer = cv2.VideoWriter(f"{self.file_path}{str(time.time())}.mp4", fourcc, fps, (width, height))
while(True):
ret, frame = cap.read()
if not ret:
break
writer.write(frame)
frame = cv2.resize(frame, (500, 300))
cv2.imshow(self.name, frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
else:
print("摄像头连接失败,请检查配置")
if __name__ == '__main__':
run = Camera_picture()
run.get_video_stream()
'''
Opencv-python读取USB摄像头视频流
pip install opencv-python
'''
import cv2
def usb_camera():
'''usb摄像头连接'''
cap = cv2.VideoCapture(0, cv2.CAP_DSHOW)
if cap.isOpened():
while(True):
ret, frame = cap.read()
cv2.imshow("Usb Capture", frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
else:
print("摄像头连接失败,请检查摄像头连接是否正常")
if __name__ == '__main__':
usb_camera()