有关图像处理的问题(从相机读取图像,然后解码,调整大小,投射,减去)

时间:2019-03-23 13:27:27

标签: python tensorflow

所以我正在研究车道检测模型的部署。开发模型的团队提供了一个测试脚本,该脚本使用文本文件中给出的图像来推断模型。

现在,我想用从相机抓取的图像推断模型。 为此,我需要更改需要图像路径的process_image函数的参数。我想将通过相机读取的图像传递给它。

这是我要更改的process_image函数:

always @* val = u_intf.values;

我想做的是这样的:

def process_img(img_path):
        img_raw = tf.read_file(img_path)
        img_decoded = tf.image.decode_jpeg(img_raw, channels=3)
        img_resized = tf.image.resize_images(img_decoded, [CFG.TRAIN.IMG_HEIGHT, CFG.TRAIN.IMG_WIDTH],
                                             method=tf.image.ResizeMethod.BICUBIC)
        img_casted = tf.cast(img_resized, tf.float32)
        return tf.subtract(img_casted, VGG_MEAN)

我想我必须在解码之前执行一项任务,因为我从相机抓取的img被保存为一个数组(我想),decode_Jpeg接受的内容是0-D字符串。编码的图像字节。但是我不知道该怎么办。

相机的代码是这样的:

from utils.camera import Camera
import numpy as np
import cv2
import tensorflow as tf

def process_img(img):
        #this will not work because decoded expects a jpeg string but the img I grabbed from the camera is an array??
        img_decoded = tf.image.decode_jpeg(img, channels=3)
        img_resized = tf.image.resize_images(img_decoded, [CFG.TRAIN.IMG_HEIGHT, CFG.TRAIN.IMG_WIDTH],
                                               method=tf.image.ResizeMethod.BICUBIC)
        img_casted = tf.cast(img_resized, tf.float32)
        return tf.subtract(img_casted, VGG_MEAN)

cam = Camera(args)
cam.open()
cam.start()
img = cam.read()
processed_img = process_img(img)

1 个答案:

答案 0 :(得分:0)

我认为您不需要解码图像,因为它已经是数组形式了。只需直接输入数组