TensorFlow视频帧与静态图像

时间:2018-07-08 21:44:22

标签: python tensorflow image-processing png video-processing

我在TensorFlow中遇到一个奇怪的问题,我怀疑有一个简单的解决方案。

我正在处理视频数据。为了创建训练数据,我使用ffmpeg将视频帧提取到PNG文件中,然后使用LabelImg创建了边界框数据集。训练有素的网络在这些PNG文件上可以很好地工作。

但是,如果我使用OpenCV打开视频并将视频中的帧馈送到网络,则根本无法正常工作。我使用像这样的OpenCV VideoCapture类:

video = cv2.VideoCapture(path_to_video)
status, frame = video.read()
output_dict = run_inference_for_single_image(frame, detection_graph)

请注意,run_inference_for_single_image是TensorFlow库提供的函数,该函数用于对打开并转换为numpy数组的PNG文件进行检测。

我得到了一些检测结果,但准确性几乎降低到了零。相反,如果我将同一帧另存为PNG文件并将其送入网络,则它将按预期工作。

为了避免将视频帧另存为PNG文件的步骤,我需要更改什么?

1 个答案:

答案 0 :(得分:0)

OpenCV具有加载彩色图像in the BGR format的怪异行为。您可以使用

im = cv2.cvtColor(im, cv2.COLOR_BGR2RGB)

将它们转换为RGB,然后再将其喂入您的网络。