python实现从本地摄像头和网络摄像头截取图片功能

yipeiwu_com7年前Python基础

python-----从本地摄像头和网络摄像头截取图片 ,具体代码如下所示:

import cv2
# 获取本地摄像头
# folder_path 截取图片的存储目录
def get_img_from_camera_local(folder_path):
  cap = cv2.VideoCapture(0)
  i = 1
  while True:
    ret, frame = cap.read()
    cv2.imshow("capture", frame)
    print str(i)
    cv2.imwrite(folder_path + str(i) + '.jpg', frame) # 存储为图像
    if cv2.waitKey(1) & 0xFF == ord('q'):
      break
    i += 1
  cap.release()
  cv2.destroyAllWindows()
# 获取网络摄像头,格式:rtsp://username:pwd@ip/
# folder_path 截取图片的存储目录
def get_img_from_camera_net(folder_path):
  cap = cv2.VideoCapture('rtsp://username:pwd@ip/')
  i = 1
  while True:
    ret, frame = cap.read()
    cv2.imshow("capture", frame)
    print str(i)
    cv2.imwrite(folder_path + str(i) + '.jpg', frame) # 存储为图像
    if cv2.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 打开网络摄像头读取图像

打开网络摄像头用如下代码:

###########################################
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)

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实现从本地摄像头和网络摄像头截取图片功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对【听图阁-专注于Python设计】网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

相关文章

Django URL传递参数的方法总结

1 无参数情况 配置URL及其视图如下: (r'^hello/$', hello) def hello(request): return HttpResponse("Hell...

Python的Django框架使用入门指引

Python的Django框架使用入门指引

 前言 传统 Web 开发方式常常需要编写繁琐乏味的重复性代码,不仅页面表现与逻辑实现的代码混杂在一起,而且代码编写效率不高。对于开发者来说,选择一个功能强大并且操作简洁的开发...

详解如何从TensorFlow的mnist数据集导出手写体数字图片

详解如何从TensorFlow的mnist数据集导出手写体数字图片

在TensorFlow的官方入门课程中,多次用到mnist数据集。 mnist数据集是一个数字手写体图片库,但它的存储格式并非常见的图片格式,所有的图片都集中保存在四个扩展名为idx3-...

Python实现二维有序数组查找的方法

本文实例讲述了Python实现二维有序数组查找的方法。分享给大家供大家参考,具体如下: 题目:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请...

基于python的汉字转GBK码实现代码

基于python的汉字转GBK码实现代码

如图,“广”的编码为%B9%E3,暂且把%B9称为节编码,%E3为字符编码(第二编码)。 思路: 从GBK编码页面收集汉字 http://ff.163.com/newflyff/gbk-...