首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将视频转换为numpy数组?

如何将视频转换为numpy数组?
EN

Stack Overflow用户
提问于 2017-02-10 23:31:46
回答 3查看 26K关注 0票数 26

我在同一个文件夹中有一个python脚本,作为我想要转换为numpy数组的视频。我的视频名为“test.mp4”。

在我的脚本中,我想调用someFunction('test.mp4')并返回一个numpy数组。得到的numpy数组应该是一个图像的numpy数组,其中每个图像都是一个三维numpy数组。

这有意义吗?

谢谢!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-02-11 02:29:50

下面的脚本实现了您想要的功能。您可以将它的一部分分离到函数中。

下面的代码不检查错误,特别是,生产代码将检查每个frame*变量是否大于零。

代码语言:javascript
复制
import cv2
import numpy as np

cap = cv2.VideoCapture('test.mp4')
frameCount = int(cap.get(cv2.CAP_PROP_FRAME_COUNT))
frameWidth = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
frameHeight = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))

buf = np.empty((frameCount, frameHeight, frameWidth, 3), np.dtype('uint8'))

fc = 0
ret = True

while (fc < frameCount  and ret):
    ret, buf[fc] = cap.read()
    fc += 1

cap.release()

cv2.namedWindow('frame 10')
cv2.imshow('frame 10', buf[9])

cv2.waitKey(0)
票数 24
EN

Stack Overflow用户

发布于 2018-01-19 18:57:39

skvideo是一个python包,可以用来读取视频并存储到多维数组中。

代码语言:javascript
复制
import skvideo.io  
videodata = skvideo.io.vread("video_file_name")  
print(videodata.shape)

有关详细信息,请访问:http://www.scikit-video.org/stable/index.htmlhttp://mllearners.blogspot.in/2018/01/scikit-video-skvideo-tutorial-for.html

票数 23
EN

Stack Overflow用户

发布于 2021-09-23 10:06:04

当我们从图像处理的角度看视频时,我们可以假设它是一个图像序列。此时,您可以循环视频的帧并将其转换为numpy数组。

下面是一个使用PillowOpenCV库的示例,其中我将网络摄像头的屏幕截图转换为numpy数组:

代码语言:javascript
复制
import cv2
import numpy as np
from PIL import Image, ImageOps    


def screenshot():
    global cam
    cv2.imwrite('screenshot.png', cam.read()[1])


if __name__ == '__main__':
    np.set_printoptions(suppress=True)

    cam = cv2.VideoCapture(0) # You can replace it with your video path
    
    while True:
        ret, img = cam.read()

        cv2.imshow('My Camera', img)

        ch = cv2.waitKey(5)
        if ch == 27:
            break

        screenshot()

        data = np.ndarray(shape=(1, 224, 224, 3), dtype=np.float32)

        image = Image.open('screenshot.png')

        size = (224, 224) # Put your suitable size
        image = ImageOps.fit(image, size, Image.ANTIALIAS)

        image_array = np.asarray(image) # Here, an image -> numpy array
        print(image_array)

    cv2.destroyAllWindows()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42163058

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档