'''
Opencv-python读取IP摄像头视频流/USB摄像头
'''
import cv2
# 创建一个窗口 名字叫做Window
cv2.namedWindow('Window', flags=cv2.WINDOW_NORMAL | cv2.WINDOW_KEEPRATIO | cv2.WINDOW_GUI_EXPANDED)
'''
#打开USB摄像头
cap = cv2.VideoCapture(0)
'''
# 摄像头的IP地址,http://用户名:密码@IP地址:端口/
ip_camera_url = 'http://admin:[email protected]:8081/'
# 创建一个VideoCapture
cap = cv2.VideoCapture(ip_camera_url)
print('IP摄像头是否开启: {}'.format(cap.isOpened()))
# 显示缓存数
print(cap.get(cv2.CAP_PROP_BUFFERSIZE))
# 设置缓存区的大小
cap.set(cv2.CAP_PROP_BUFFERSIZE,1)
#调节摄像头分辨率
cap.set(cv2.CAP_PROP_FRAME_WIDTH, 1920)
cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 1080)
print(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
print(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
#设置FPS
print('setfps', cap.set(cv2.CAP_PROP_FPS, 25))
print(cap.get(cv2.CAP_PROP_FPS))
while(True):
#逐帧捕获
ret, frame = cap.read() #第一个参数返回一个布尔值(True/False),代表有没有读取到图片;第二个参数表示截取到一帧的图片
# gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
cv2.imshow('Window', frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
#当一切结束后,释放VideoCapture对象
cap.release()
cv2.destroyAllWindows()
1、delay≤0:一直等待按键;
2、delay取正整数:等待按键的时间,比如cv2.waitKey(20),就是等待20(ms);(视频中一帧数据显示(停留)的时间)
1、等待期间有按键:返回按键的ASCII码(比如:Esc的ASCII码为27);
2、等待期间没有按键:返回 -1;