我怎么可能使用从我的网络摄像头生成的帧作为我的 Keras 模型的输入?

Posted

技术标签:

【中文标题】我怎么可能使用从我的网络摄像头生成的帧作为我的 Keras 模型的输入?【英文标题】:How possibly can I use the frames generated from my webcam to be the input of my Keras model? 【发布时间】:2021-12-30 19:51:02 【问题描述】:

我想把img_path改成opencv生成的帧:

img = image.load_img(img_path, target_size=(224, 224))

如何重写?

【问题讨论】:

【参考方案1】:

我假设您正在使用的 image.load_img() 函数是来自 keras_utils 包的函数。

正如文档中所述,load_img() 接受图像的 path 作为第一个参数并返回:

返回: 一个 PIL Image 实例。

问题中没有提到,但是如果您使用 opencv 从相机读取帧,它们应该已经是 numpy 数组,您可以将其传递给您的模型。当然,您应该在 (how to resize the image using opencv) 之前将它们调整为 (224,224)。

但是,如果您想要 PIL 图像(具有与 load_img() 返回的图像相同的类型),您需要将您的 opencv 帧(numpy 数组)转换为 PIL 图像。按照这个question and answer by @ZdaR进行转换:

import cv2
import numpy as np
from PIL import Image

img = cv2.imread("path/to/img.png")

# You may need to convert the color.
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
im_pil = Image.fromarray(img)

# For reversing the operation:
im_np = np.asarray(im_pil)

【讨论】:

对不起,我不得不提到我正在获取帧 cv2.VideoCapture(0)。 如果你打开的对象是cap,那就是ret, frame = cap.read(); if ret: # do something with frame 谢谢,现在如何为对象绘制方框? 看看this教程了解如何在opencv中绘制不同的形状

以上是关于我怎么可能使用从我的网络摄像头生成的帧作为我的 Keras 模型的输入?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Html5 从我的网络摄像头播放视频? [关闭]

使用 Java 或 Python 从我的网络摄像头捕获单个图像

如何使用 OpenCV 从我的磁盘播放视频文件。? [关闭]

将 OpenCV IplImage 渲染到 QGLWidget

将网络摄像头中的帧捕获为位图 - VFW - WINAPI

如何将视频从我的应用程序流式传输到网络?