python实现从本地摄像头和网络摄像头截取图片功能
python-----从本地摄像头和网络摄像头截取图片,具体代码如下所示:
importcv2
#获取本地摄像头
#folder_path截取图片的存储目录
defget_img_from_camera_local(folder_path):
cap=cv2.VideoCapture(0)
i=1
whileTrue:
ret,frame=cap.read()
cv2.imshow("capture",frame)
printstr(i)
cv2.imwrite(folder_path+str(i)+'.jpg',frame)#存储为图像
ifcv2.waitKey(1)&0xFF==ord('q'):
break
i+=1
cap.release()
cv2.destroyAllWindows()
#获取网络摄像头,格式:rtsp://username:pwd@ip/
#folder_path截取图片的存储目录
defget_img_from_camera_net(folder_path):
cap=cv2.VideoCapture('rtsp://username:pwd@ip/')
i=1
whileTrue:
ret,frame=cap.read()
cv2.imshow("capture",frame)
printstr(i)
cv2.imwrite(folder_path+str(i)+'.jpg',frame)#存储为图像
ifcv2.waitKey(1)&0xFF==ord('q'):
break
i+=1
cap.release()
cv2.destroyAllWindows()
#测试
if__name__=='__main__':
folder_path='D:\\img_from_camera\\'
get_img_from_camera_local(folder_path)
PS:下面看下用python,opencv打开网络摄像头读取图像
打开网络摄像头用如下代码:
###########################################
importcv2
url='rtsp://admin:password@192.168.1.104:554/11'
cap=cv2.VideoCapture(url)
while(cap.isOpened()):
#Captureframe-by-frame
ret,frame=cap.read()
#Displaytheresultingframe
cv2.imshow('frame',frame)
ifcv2.waitKey(1)&0xFF==ord('q'):
break
#Wheneverythingdone,releasethecapture
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),会因为延时过久而卡顿感觉到卡顿。
c得到的是键盘输入的ASCII码,esc键对应的ASCII码是27,即当按esc键是if条件句成立
4、调用release()释放摄像头,调用destroyAllWindows()关闭所有图像窗口。
总结
以上所述是小编给大家介绍的python实现从本地摄像头和网络摄像头截取图片功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!