Python OpenCV проигрывает видео очень медленно - PullRequest
0 голосов
/ 10 апреля 2019

Я новичок в обработке изображений с использованием python.

Я хочу сделать видеоплеер на встроенной плате (LattePanda), такой как SMplayer of ubuntu , введите описание ссылки здесь

Итак, я написал такой код

#-*- coding:utf-8 -*-
__Version__ = '1.0V'

import os, sys, time
import cv2
from Queue import Queue
from threading import Thread

print cv2.useOptimized()

class FileVideoStream:
        def __init__(self, path, queuesize=512):
                self.stream = cv2.VideoCapture(path)
                self.stopped = False
                self.Q = Queue(maxsize=queuesize)

        def start(self):
                t = Thread(target=self.update, args=())
                t.daemon = True
                t.start()
                return self

        def update(self):
                while True:
                        if self.stopped:
                                return

                        if not self.Q.full():
                                (ret, frame) = self.stream.read()

                                if not ret:
                                        self.stop()
                                        return

                                self.Q.put(frame)

        def read(self):
                return self.Q.get()

        def more(self):
                return self.Q.qsize() > 0

        def stop(self):
                self.stopped = True


def main():
        window_name = 'window'
        fvs = FileVideoStream('test.mp4').start()

        cv2.namedWindow(window_name, cv2.WND_PROP_FULLSCREEN)
        cv2.setWindowProperty(window_name, cv2.WND_PROP_FULLSCREEN, cv2.WINDOW_FULLSCREEN)

        while True:
                qsize = '%s' % str(fvs.Q.qsize())
                qsize = int(qsize)
                if qsize > 2:
                        break
                else:
                        time.sleep(0.5)

        while fvs.more():
                frame = fvs.read()
                cv2.imshow(window_name, frame)
                cv2.waitKey(1)

if __name__ == '__main__':
        main()

Но результат этого кода намного медленнее, чем SMplayer.не гладко.Пожалуйста, помогите мне, как видеопроигрыватель, такой как SMplayer, сделал плавную игру?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...