Tensorflow позволил моему opencv VideoWriter выйти из строя - PullRequest
0 голосов
/ 17 февраля 2020

Я пытаюсь использовать ручной детектор Openpose (OpenPose Python Wrapper). Это сделано с помощью tenorflow, и пусть мой opencv videowriter не работает.

Вот код

import detection_keypoints
import detection_rectangles
import cv2
cap = cv2.VideoCapture('video.mp4')
im_width, im_height = (int(cap.get(3)), int(cap.get(4)))
fourcc = cv2.VideoWriter_fourcc(*'mp4v')
out = cv2.VideoWriter('./output.mp4', fourcc, 20.0, (int(cap.get(3)),int(cap.get(4))))
detection_graph, sess = detection_rectangles.load_inference_graph() # error line
success, frame = cap.read()
while success:
        success, frame = cap.read()  # get the next frame of the video
        cv2.rectangle(frame, (50, 50), (100, 100), (255, 0, 0), 2, 1)
        out.write(frame)  # write one frame into the output video

cv2.destroyAllWindows()  # close all the widows opened inside the program
cap.release()

Detection_rectangles

def load_inference_graph():
    # load frozen tensorflow model into memory
    print("> ====== loading HAND frozen graph into memory")
    gpu_options = tf.GPUOptions(per_process_gpu_memory_fraction=0.33)
    detection_graph = tf.Graph()
    with detection_graph.as_default():
        od_graph_def = tf.GraphDef()
        with tf.gfile.GFile(PATH_TO_CKPT, 'rb') as fid:
            serialized_graph = fid.read()
            od_graph_def.ParseFromString(serialized_graph)
            tf.import_graph_def(od_graph_def, name='')
        sess = tf.Session(graph=detection_graph, config=tf.ConfigProto(gpu_options=gpu_options))
    print(">  ====== Hand Inference graph loaded.")
    return detection_graph, sess

После выполнения этих кодов я получаю вывод 10,4 Мб .mp4 Но его нельзя открыть. (VL C player)

После комментирования строки ошибки

detection_graph, sess = detection_rectangles.load_inference_graph()

Я получил 10,5 Мб output.mp4, и он мог играть успешно .... Так что мне интересно, tenorsflow меняет некоторые конфиги opencv или я что-то пропускаю?

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