写点什么

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

作者:虫无涯
  • 2023-02-16
    陕西
  • 本文字数:1127 字

    阅读完需:约 4 分钟

今天测试的时候,遇到了一个问题,测试需求是,需要把摄像头拍摄的实时视频逐帧率保存下来。
复制代码


经过查阅资料以及网友帮助,目前已经完成。记录下来希望可以帮助有需要的朋友。

1、思路

使用 Python+Opencv,从摄像头的实时视频流中逐帧读取图片,保存到本地

2、工具

  1. 安装 Python

  2. 安装 Opencv

3、分类

目前测试的过程中遇到了三种类型的摄像头数据读取,分别是:


  1. USB 普通摄像机:


直接使用 Python+Opencv,进行数据采集


self.cap = cv2.VideoCapture(0);0是本地摄像头
复制代码


  1. USB 工业摄像头:


使用厂家自带的 SDK 进行二次开发,例如某厂家的 SDK 如下:


  1. 网络摄像头:


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


4、示例

# -*- coding: cp936 -*-"""Author:xxxxxxDate:2019-09-23Discription:Read Camaro picture and save """
import cv2,os,timeimport numpy as npfrom multiprocessing import Processimport thread
class CamaroCap(object):
#打开摄像头 def __init__(self): #self.cap = cv2.VideoCapture(0) self.cap = cv2.VideoCapture("rtsp://admin:admin123@172.16.9.23/cam/realmonitor?channel=1&subtype=0")#获取网络摄像机 """ self.cap.set(cv2.CAP_PROP_FOURCC, cv2.VideoWriter_fourcc('M', 'J', 'P', 'G')) self.cap.set(cv2.CAP_PROP_FRAME_WIDTH, 640) self.cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 480); """
#图片信息打印 def get_image_info(self,image): print(type(image)) print(image.shape) print(image.size) print(image.dtype) pixel_data = np.array(image) print(pixel_data)
#逐帧读取数据并保存图片到本地制定位置 def Camaro_image(self): i = 0 while(1): """ ret:True或者False,代表有没有读取到图片 frame:表示截取到一帧的图片 """ ret,frame = self.cap.read() ret,frame = self.cap.read() #print("打印图片信息") #self.get_image_info(frame) # 展示图片 cv2.imshow('capture',frame) #保存图片 cv2.imwrite(r"D:\image\\"+ str(i) + ".jpg",frame) i = i + 1 if cv2.waitKey(1) & 0xFF == ord('q'): break
if __name__ == '__main__': outmasages = CamaroCap() #调用摄像头 outmasages.Camaro_image() #释放对象和销毁窗口 outmasages.cap.release() cv2.destroyAllWindows()
复制代码


发布于: 刚刚阅读数: 5
用户头像

虫无涯

关注

专注测试领域各种技术研究、分享和交流~ 2019-12-11 加入

CSDN测试领域优质创作者 | CSDN博客专家 | 阿里云专家博主 | 华为云享专家 | 51CTO专家博主

评论

发布
暂无评论
使用Python+Opencv从摄像头逐帧读取图片保存在本地_Python_虫无涯_InfoQ写作社区