通过OpenCV视频捕获在视频中使用张量流检测对象

时间:2018-09-27 01:43:46

标签: python opencv tensorflow

我想使用tensorflow MobileNet(https://www.tensorflow.org/hub/tutorials/image_retraining#training)来检测视频中的那个对象。我尝试了多种方法将videocapture opencv中的视频帧放入tensorflow图像,但是我仍然无法运行它。我们如何在张量流的视频中检测到该物体?

这是检测图像中该对象类别的方法

python label_image.py \
--graph=/tmp/output_graph.pb --labels=/tmp/output_labels.txt \
--input_layer=Placeholder \
--output_layer=final_result \
--input_height=224 --input_width=224 \
--image=$HOME/flower_photos/daisy/21652746_cc379e0eea_m.jpg

我想将其应用于类似视频

while(cap.isOpened()):
    ret, frame = cap.read()
    if ret:
        label_image --graph=../tf_files/retrained_graph.pb --image=frame

但是我无法将opencv视频帧放入tensorflow函数

1 个答案:

答案 0 :(得分:0)

您可以使用电影

以与视频类似的方法从视频中提取帧:
from moviepy.editor import VideoFileClip

clip = VideoFileClip(video_file)

video_duration = clip.duration

intervals = range(3, int(video_duration), 3) #suposing you want a frame every 3 seconds of the video


for t in intervals:
        clip_file = "frame_num_%d.png"%t
        clip.save_frame(clip_file, t)

让我知道这是否有助于您澄清问题。