将已排序的帧转换为视频 [英] Converting sequenced frames to video

查看:122
本文介绍了将已排序的帧转换为视频的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试将图像转换为视频,但是顺序不正确,因此我正在使用glob对其进行组织.此后,我开始犯错误,然后将代码简化为:

import re
import glob
import cv2

numbers = re.compile(r'(\d+)')

def numericalSort(value):
    parts = numbers.split(value)
    parts[1::2] = map(int, parts[1::2])
    return parts

for infile in sorted(glob.glob('*.jpg'), key=numericalSort):
    img1 = cv2.imread(infile)

    cv2.imshow('image', img1)

    exit()

由于某种原因,它没有显示"img1".

我认为我不能为变量调用"cv2.imread",因为在我之前的代码中,当我调用opencv函数与"img1"一起使用时,它说的是其不是有效的数组"之类的内容. /p>

所以,我的问题是,为什么imshow无法运行,以及如何使用文件中的" behind""图像并使用此文件.

解决方案

您需要调用waitKey()才能使imshow()工作.

例如:

import re
import glob
import cv2

numbers = re.compile(r'(\d+)')

def numericalSort(value):
    parts = numbers.split(value)
    parts[1::2] = map(int, parts[1::2])
    return parts

for infile in sorted(glob.glob('*.jpg'), key=numericalSort):
    img1 = cv2.imread(infile)

    cv2.imshow('image', img1)
    k = cv2.waitKey(33)
    if k==27:    # Escape to quit
        break

I'm trying to convert images to video, but it wasn't getting the right sequence, so I'm using glob to organize it. After this I was getting erros, and then I reduced my code to this:

import re
import glob
import cv2

numbers = re.compile(r'(\d+)')

def numericalSort(value):
    parts = numbers.split(value)
    parts[1::2] = map(int, parts[1::2])
    return parts

for infile in sorted(glob.glob('*.jpg'), key=numericalSort):
    img1 = cv2.imread(infile)

    cv2.imshow('image', img1)

    exit()

And for some reason it isn't showing 'img1'.

I think I can't call "cv2.imread" for a variable, because in my previous code it was saying something like "its not a valid array" when I called an opencv function to work with 'img1'.

So, my questions is, why isn't imshow running, and how could I use the image """behind""" infile and work with this file.

解决方案

You need a call to waitKey() in order for imshow() to work.

For example:

import re
import glob
import cv2

numbers = re.compile(r'(\d+)')

def numericalSort(value):
    parts = numbers.split(value)
    parts[1::2] = map(int, parts[1::2])
    return parts

for infile in sorted(glob.glob('*.jpg'), key=numericalSort):
    img1 = cv2.imread(infile)

    cv2.imshow('image', img1)
    k = cv2.waitKey(33)
    if k==27:    # Escape to quit
        break

这篇关于将已排序的帧转换为视频的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆