找回密码
 立即注册
首页 编程领域 编程板块 使用Python+Opencv从摄像头逐帧读取图片保存在本地

Python 使用Python+Opencv从摄像头逐帧读取图片保存在本地

2023-3-20 14:24:08 评论(0)
1、思路
使用Python+Opencv,从摄像头的实时视频流中逐帧读取图片,保存到本地
2、工具
  • 安装Python
  • 安装Opencv
3、分类
目前测试的过程中遇到了三种类型的摄像头数据读取,分别是:
  • USB普通摄像机:
直接使用Python+Opencv,进行数据采集



  • USB工业摄像头:
使用厂家自带的SDK进行二次开发,例如某厂家的SDK如下:


  • 网络摄像头:
从RTSP流中读取数据,读取方法,以大华普通网络摄像头为例:



4、示例
  1. # -*- coding: cp936 -*-
  2. """
  3. Author:xxxxxx
  4. Date:2019-09-23
  5. Discription:Read Camaro picture and save
  6. """

  7. import cv2,os,time
  8. import numpy as np
  9. from multiprocessing import Process
  10. import thread

  11. class CamaroCap(object):

  12.     #打开摄像头
  13.     def __init__(self):
  14.         #self.cap = cv2.VideoCapture(0)
  15.         self.cap = cv2.VideoCapture("rtsp://admin:admin123@172.16.9.23/cam/realmonitor?channel=1&subtype=0")#获取网络摄像机
  16.         """
  17.         self.cap.set(cv2.CAP_PROP_FOURCC, cv2.VideoWriter_fourcc('M', 'J', 'P', 'G'))
  18.         self.cap.set(cv2.CAP_PROP_FRAME_WIDTH, 640)
  19.         self.cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 480);
  20.         """

  21.     #图片信息打印      
  22.     def get_image_info(self,image):
  23.         print(type(image))
  24.         print(image.shape)
  25.         print(image.size)
  26.         print(image.dtype)
  27.         pixel_data = np.array(image)
  28.         print(pixel_data)

  29.     #逐帧读取数据并保存图片到本地制定位置
  30.     def Camaro_image(self):
  31.         i = 0
  32.         while(1):
  33.             """
  34.             ret:True或者False,代表有没有读取到图片
  35.             frame:表示截取到一帧的图片
  36.             """
  37.             ret,frame = self.cap.read()
  38.             ret,frame = self.cap.read()
  39.             #print("打印图片信息")
  40.             #self.get_image_info(frame)
  41.             
  42.             # 展示图片
  43.             cv2.imshow('capture',frame)
  44.             #保存图片
  45.             cv2.imwrite(r"D:\image\"+ str(i) + ".jpg",frame)
  46.             i = i + 1
  47.             if cv2.waitKey(1) & 0xFF == ord('q'):
  48.                 break

  49. if __name__ == '__main__':
  50.     outmasages = CamaroCap()
  51.     #调用摄像头
  52.     outmasages.Camaro_image()
  53.     #释放对象和销毁窗口
  54.     outmasages.cap.release()
  55.     cv2.destroyAllWindows()
复制代码



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

使用道具 举报

特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们(3513994353@qq.com)。
您需要登录后才可以回帖 登录 | 立即注册
楼主
摸鱼写代码

关注0

粉丝0

帖子36

最新动态