gpt4 book ai didi

python - 将python opencv mat图像转换为tensorflow图像数据

转载 作者:太空狗 更新时间:2023-10-29 20:41:45 26 4
gpt4 key购买 nike

我想用 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})

我将不胜感激任何帮助,在此先感谢

最佳答案

使用 imread 加载 OpenCV 图像,然后将其转换为 numpy 数组。

为了输入 inception v3,您需要使用 Mult:0 Tensor 作为入口点,这需要一个具有布局的 4 维 Tensor:[Batch index,Width,Height,Channel]最后三个在 cv::Mat 中完全没问题,第一个只需要为 0,因为您不想提供一批图像,而是提供单个图像。代码如下:

#Loading the file
img2 = cv2.imread(file)
#Format for the Mul:0 Tensor
img2= cv2.resize(img2,dsize=(299,299), interpolation = cv2.INTER_CUBIC)
#Numpy array
np_image_data = np.asarray(img2)
#maybe insert float convertion here - see edit remark!
np_final = np.expand_dims(np_image_data,axis=0)

#now feeding it into the session:
#[... initialization of session and loading of graph etc]
predictions = sess.run(softmax_tensor,
{'Mul:0': np_final})
#fin!

亲切的问候,

克里斯

编辑:我刚刚注意到,初始网络希望将强度值标准化为 float [-0.5,0.5],因此请在构建 RGB 图像之前使用此代码转换它们:

np_image_data=cv2.normalize(np_image_data.astype('float'), None, -0.5, .5, cv2.NORM_MINMAX)

关于python - 将python opencv mat图像转换为tensorflow图像数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40273109/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com