我读了如下图像
image_float = cv2.imread('/data/cat.jpg',cv2.IMREAD_UNCHANGED)
读取图像的形状为(1200, 1600, 3)
。
当此读取数组传递给以下代码if image.get_shape().ndims != 3:
时,将显示一条错误消息AttributeError: numpy.ndarray' object has no attribute get_shape
在我看来,get_shape()
和ndims
期待Tensorflow张量。但是,我如上所述使用cv2读取图像。如何将cv2读取的图像转换为张量流张量。
最初,图像读取如下
rl = ("https://upload.wikimedia.org/wikipedia/commons/d/d9/"
"First_Student_IC_school_bus_202076.jpg")
image_string = urllib2.urlopen(url).read()
image = tf.image.decode_jpeg(image_string, channels=3)
# Convert image to float32 before subtracting the
# mean pixel value
image_float = tf.to_float(image, name='ToFloat')
答案 0 :(得分:0)
尝试先将其转换为张量:
image_cv = cv2.imread('/data/cat.jpg', cv2.IMREAD_UNCHANGED)
image_tensor = tf.convert_to_tensor(image_float, dtype=np.int32)
image_float = tf.to_float(image_tensor, name='ToFloat')
顺便说一句,如果它是JPEG(不支持alpha通道),为什么需要IMREAD_UNCHANGED
标志?
您也可以只要求TF从该文件中加载jpeg:
image = tf.image.decode_jpeg(tf.read_file('/data/cat.jpg'), channels=3)