我想用 python 和 opencv 从视频中捕获帧,然后用 tensorflow 对捕获的 Mat 图像进行分类。问题是我不知道如何将 de Mat 格式转换为 3D 张量变量。这就是我现在使用 tensorflow 的方式(从文件加载图像):
image_data = tf.gfile.FastGFile(imagePath, 'rb').read()
with tf.Session() as sess:
softmax_tensor = sess.graph.get_tensor_by_name('final_result:0')
predictions = sess.run(softmax_tensor,
{'DecodeJpeg/contents:0': image_data})
我将不胜感激任何帮助,在此先感谢
原文由 Txeif 发布,翻译遵循 CC BY-SA 4.0 许可协议
使用 imread 加载 OpenCV 图像,然后将其转换为 numpy 数组。
为了输入 inception v3,您需要使用 Mult:0 Tensor 作为入口点,这需要一个具有布局的 4 维 Tensor:[Batch index,Width,Height,Channel] 最后三个来自 cv 非常好: :Mat,第一个只需要是 0,因为你不想提供一批图像,而是单个图像。代码如下:
亲切的问候,
克里斯
编辑:我刚刚注意到,初始网络希望将强度值标准化为 [-0.5,0.5] 的浮点数,因此请在构建 RGB 图像之前使用此代码转换它们: