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

打开网络摄像头用如下代码:
###########################################
import cv2
url = 'rtsp://admin:[email protected]: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)

1、cap = cv2.VideoCapture(0)

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

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

2、ret,frame = cap.read()

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

3、cv2.waitKey(1),waitKey()方法本身表示等待键盘输入,

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

参数为0,如cv2.waitKey(0)只显示当前帧图像,相当于视频暂停,;

参数过大如cv2.waitKey(1000),会因为延时过久而卡顿感觉到卡顿。

扫描二维码关注公众号,回复: 5423792 查看本文章

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

4、调用release()释放摄像头,调用destroyAllWindows()关闭所有图像窗口。


 

猜你喜欢

转载自blog.csdn.net/yournevermore/article/details/88130413