在实现我制作成视频的 CNN+LSTM 模型时遇到问题

Having trouble when implementing CNN+LSTM model that i made into a video

我正在尝试在视频上测试我的模型以进行预测。

我想使用我的 cnn(alexnet)+lstm 模型对我拥有的视频进行预测,但是当它运行时,视频中没有任何内容出现。

这是我的代码:

vid = cv2.VideoCapture("Data Fix/Data16_133.mp4")

while(vid.isOpened()):
    ret, frame = vid.read()
    vid.set(3, 480)
    vid.set(4, 240)
    start = time.time()
    if ret == True:
        total_frame += 1
        draw = frame.copy()
        draw = cv2.cvtColor(draw, cv2.COLOR_BGR2RGB)
        scale_percent = 20 # percent of original size
        width = 224
        height = width
        dim = (width, height)
        frame_set = cv2.resize(draw, dim, interpolation = cv2.INTER_AREA)
        frame_set=np.arange(10*width*height*3).reshape(10,width, height, 3)
        frame_set.reshape(10, width, height, 3).shape
        frame_set = np.expand_dims(frame_set, axis=0)
        result=model.predict_on_batch(frame_set)

        cv2.imshow('Result', result)
        print(result)
        if cv2.waitKey(1) & 0xFF == ord('q'):
            break            

vid.release()
cv2.destroyAllWindows()

当我打印结果时,它一遍又一遍地打印这个值而没有显示 cv2.imshow

中的任何内容
[[0.0602112  0.01403825 0.3782384  0.5362205  0.01129159]]

有人知道这件事吗? 任何答案将不胜感激

目前我正在尝试this tutorial制作模型和我放置数据集的方式也是一样的,不同的是我没有使用MobileNet迁移学习,我修改了它使用AlexNet 型号。

问题是您的结果不是可以使用 OpenCV 显示的图像。您的结果是您的模型的输出,根据共享笔记本,该模型是 class 化模型并代表 class 概率。我假设您正在尝试预测与视频相对应的一些 class。如果你想看到框架,那么你必须像这样使用它:

cv2.imshow('frame', frame) # to see the frame
# below to see the draw
cv2.imshow('draw', draw)

编辑:如果你想在图像上显示预测的 class 那么 执行以下操作

# Get the predicted class from the result using argmax
pred_class = np.argmax(result)
# Here I assume that the index is the desired class like most cases

# Now we will write the class label on the image
# Set the font and place
font = cv2.FONT_HERSHEY_SIMPLEX
org = (50, 50)
cv2.putText(frame, str(pred_class), org, font, .5, (255,255,255),2,cv2.LINE_AA)

# now just show the frame
cv2.imshow('frame', frame)