import cv2
from flask import *
import paddlex as pdx
import flask
import uuid
import os
import time
import json
import sys
import threading
import requests
from concurrent.futures import ThreadPoolExecutor, as_completed
class VideoIter(object):
def __init__(self, video_name):
self.cap = cv2.VideoCapture(video_name)
self.size = [int(self.cap.get(cv2.CAP_PROP_FRAME_HEIGHT)),
int(self.cap.get(cv2.CAP_PROP_FRAME_WIDTH))]
self.fps = self.cap.get(cv2.CAP_PROP_FPS)
assert self.cap.isOpened(), FileNotFoundError
self.num_frame = self.cap.get(cv2.CAP_PROP_FRAME_COUNT)
self.frame = 1
def __iter__(self):
return self
def __next__(self):
ret, img = self.cap.read()
if not ret :
self.cap.release()
raise StopIteration
print("=============> 视频帧数字", self.frame,ret)
self.frame += 1
return img
class Detector(object):
def __init__(self):
global model, predictor
predictor = pdx.deploy.Predictor('./inference_model', use_gpu=True)
def detect_video(self, path,iou_thres=0.4):
list = []
video_dataset = VideoIter(path)
for img in video_dataset:
n = video_dataset.frame
print("=============> 视频第几帧 ",n)
print("end")
print(list)
yield 3
return 0
det = Detector()
path="http://*.mp4"
infer = det.detect_video(path)
while True:
try:
result = next(infer)
print(result)
except StopIteration:
print("视频结束")
break