Python OpenCV 从视频保存图片

Posted ruanlanying

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python OpenCV 从视频保存图片相关的知识,希望对你有一定的参考价值。

# 读取数据
import cv2
cam_port_num = 0
# 定位对象
video = cv2.VideoCapture(cam_port_num)

while (True):
    # 收集 video frame
    # 采用frame
    result, frame = video.read()

    # 显示结果
    cv2.imshow('video', frame)

    # 按s保存图片
    if cv2.waitKey(1) & 0xFF == ord('s'):
        cv2.imwrite("img.png", frame)
        print('ok')
        continue
    # 按q退出
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

# 使用循环loop指令后 release 视频
video.release()
# Destroy all the windows
cv2.destroyAllWindows()

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

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

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

1、思路

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

2、工具

  1. 安装Python
  2. 安装Opencv

3、分类

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

  1. USB普通摄像机:
self.cap = cv2.VideoCapture(0);0是本地摄像头
  1. USB工业摄像头:
  1. 网络摄像头:

4、示例

# -*- coding: cp936 -*-
"""
Author:xxxxxx
Date:2019-09-23
Discription:Read Camaro picture and save 
"""

import cv2,os,time
import numpy as np
from multiprocessing import Process
import 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()
    

以上是关于Python OpenCV 从视频保存图片的主要内容,如果未能解决你的问题,请参考以下文章

Opencv:视频中人脸检测并保存人脸图片

使用opencv去操作树莓派摄像头保存图片和视频

入门opencv

OpenCV | 图片与视频的相互转换(C++&Python)

OpenCV|图片与视频的相互转换(C++&Python)

python+openCV (入门级)车道线检测 学习笔记