python - 从 imutils 到 tensorflow 的视频馈送

标签 python opencv tensorflow

我是 tensorflow 和 opencv 的新手。

我正在使用 imutils用于从网络摄像头流式传输视频以实现更高 fps 的软件包。我想将这些帧输入到我通过迁移学习训练的 CNN 初始模型。目前我正在做以下事情:

初始化:

from imutils.video import WebcamVideoStream

stream = WebcamVideoStream(src=0).start()

提供每一帧的片段:

while True:

 frame=stream.read() 
 cv2.imwrite('pic.jpg',frame)
 im_data=tf.gfile.FastGFile('pic.jpg', 'rb').read()
 text=run_graph(im_data, labels, FLAGS.input_layer, FLAGS.output_layer)
 cv2.putText(frame,text,topLeftCornerOfText,font,fontScale,fontColor,lineType)
 cv2.imshow("Frame",frame)
 key = cv2.waitKey(1) & 0xFF
 fps.update()
 if key == ord('q'):
    break

我从队列中读取每一帧,将其保存为“pic.jpg”,然后将文件名作为参数传递给 tf.gfile.FastGFile 以将其提供给run_graph 函数将其预测为我在图像上显示的变量 text 的内容。

这行得通,但由于写入和读取,速度很慢。执行此操作的有效方法是什么,或者如何将视频流直接输入到 tensorflow 中。

cv2.VideoCapture(0) 阻塞主线程,直到从相机读取帧。 imutil 在单独的线程中执行此操作并将帧添加到队列中,然后在调用 read() 时在单独的线程中从队列中读取帧,这提供了高 fps .如果有其他代码可以做到同样的事情,兼容tensorflow,并且可以让我在图片上添加文字,逐帧显示预测,那也是完美的。

最佳答案

引用自 datascience.stackexchange .

修改后的代码:

while True:

 frame=stream.read() 
 frame = cv2.resize(frame, (299, 299), interpolation=cv2.INTER_CUBIC)
 numpy_frame = np.asarray(frame)
 numpy_frame = cv2.normalize(numpy_frame.astype('float'), None, -0.5, .5, cv2.NORM_MINMAX)
 numpy_final = np.expand_dims(numpy_frame, axis=0)
 text=run_graph(numpy_final, labels, FLAGS.input_layer, FLAGS.output_layer)
 cv2.putText(frame,text,topLeftCornerOfText,font,fontScale,fontColor,lineType)
 cv2.imshow("Frame",frame)
 key = cv2.waitKey(1) & 0xFF
 fps.update()
 if key == ord('q'):
    break

关于python - 从 imutils 到 tensorflow 的视频馈送,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49613059/

相关文章:

python - Python 中的静态类变量,不会为每个实例复制

python - 是否可以使用 python 执行参数敏感性分析?

c++ - 将 IplImage* 类型转换为 CvMat

python - MNIST 数据集中的图像是如何转换的?

python - Tensorflow 2.0 : How to change the output signature while using tf. 保存模型

python - 特征列预训练嵌入

Python to_datetime(来自 3 列中的 int/float)

Python OpenCV PyCharm 自动完成

c++ - 除法后的 OpenCv 回合

python - 在Python中使用OpenCv检测几乎直线