用 python , opencv 打开网络摄像头读取图像

打开网络摄像头用以下代码:
###########################################
import cv2
url = 'rtsp://admin:password@192.168.1.104:554/11'
cap = cv2.VideoCapture(url)
while(cap.isOpened()):  
    # Capture frame-by-frame  
    ret, frame = cap.read()  
    # Display the resulting frame  
    cv2.imshow('frame',frame)  
    if cv2.waitKey(1) & 0xFF == ord('q'):  
        break  
# When everything done, release the capture  
cap.release()  
cv2.destroyAllWindows()
############################################网络

注: 将从摄像头获取的图像从bgr转为rgb : image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)ide

一、cap = cv2.VideoCapture(0)url

VideoCapture()中参数是0,表示打开笔记本的内置摄像头,参数是1,表示打开usb摄像头,视频

参数是视频文件路径则打开视频,如cap = cv2.VideoCapture("../test.avi")it

二、ret,frame = cap.read()test

 cap.read()按帧读取视频,ret,frame是获cap.read()方法的两个返回值。其中ret是布尔值,若是读取帧是正确的则返回True,若是文件读取到结尾,它的返回值就为False。frame就是每一帧的图像,是个三维矩阵。import

三、cv2.waitKey(1),waitKey()方法自己表示等待键盘输入,方法

参数是1,表示延时1ms切换到下一帧图像,对于视频而言;im

参数为0,如cv2.waitKey(0)只显示当前帧图像,至关于视频暂停,;文件读取

参数过大如cv2.waitKey(1000),会由于延时太久而卡顿感受到卡顿。

c获得的是键盘输入的ASCII码,esc键对应的ASCII码是27,即当按esc键是if条件句成立

四、调用release()释放摄像头,调用destroyAllWindows()关闭全部图像窗口。