【发布时间】:2017-05-25 10:07:02
【问题描述】:
我试图弄清楚如何截取在 Tensorflow 中动态确定的图像。下面是我想要完成的一个例子,但是我似乎无法让它工作。本质上,我想在图中提供图像和该图像的裁剪值,然后继续对这些裁剪的部分进行其他计算。我目前的尝试:
import tensorflow as tf
from matplotlib import pyplot as plt
import numpy as np
sess = tf.InteractiveSession()
img1 = np.random.random([400, 600, 3])
img2 = np.random.random([400, 600, 3])
img3 = np.random.random([400, 600, 3])
images = [img1, img2, img3]
img1_crop = [100, 100, 100, 100]
img2_crop = [200, 150, 100, 100]
img3_crop = [150, 200, 100, 100]
crop_values = [img1_crop, img2_crop, img3_crop]
def crop_image(img, crop):
tf.image.crop_to_bounding_box(img,
crop[0],
crop[1],
crop[2],
crop[3])
image_placeholder = tf.placeholder("float", [None, 400, 600, 3])
crop_placeholder = tf.placeholder(dtype=tf.int32)
sess.run(tf.global_variables_initializer())
cropped_image = tf.map_fn(lambda img, crop: crop_image(img, crop), elems=[image_placeholder, crop_placeholder])
result = sess.run(cropped_image, feed_dict={image_placeholder: images, crop_placeholder:crop_values})
plt.imshow(result)
plt.show()
/Users/p111/anaconda/bin/python /Users/p111/PycharmProjects/analysis_code/testing.py
回溯(最近一次通话最后):
文件“/Users/p111/PycharmProjects/analysis_code/testing.py”,第 31 行,在
cropped_image = tf.map_fn(lambda img,crop:crop_image(img,crop), elems=[image_placeholder,crop_placeholder])
map_fn 中的文件“/Users/p111/anaconda/lib/python3.5/site-packages/tensorflow/python/ops/functional_ops.py”,第 390 行
交换内存=交换内存)
文件“/Users/p111/anaconda/lib/python3.5/site-packages/tensorflow/python/ops/control_flow_ops.py”,第 2636 行,在 while_loop
结果 = context.BuildLoop(cond, body, loop_vars, shape_invariants)
BuildLoop 中的文件“/Users/p111/anaconda/lib/python3.5/site-packages/tensorflow/python/ops/control_flow_ops.py”,第 2469 行
pred, body, original_loop_vars, loop_vars, shape_invariants)
_BuildLoop 中的文件“/Users/p111/anaconda/lib/python3.5/site-packages/tensorflow/python/ops/control_flow_ops.py”,第 2419 行
body_result = body(*packed_vars_for_body)
文件“/Users/p111/anaconda/lib/python3.5/site-packages/tensorflow/python/ops/functional_ops.py”,第 380 行,在计算中
packed_fn_values = fn(packed_values)
TypeError:()缺少1个必需的位置参数:'crop'
编辑:elems 似乎只接受一个张量。这意味着我需要以某种方式将我的两个张量合并为一个,然后在我的函数中解包以获取值。我不确定我将如何执行这种张量操作。我已经找到了 glimpse 方法并且确实有效,但是我想知道是否可以使用这种特定方法来完成相同的操作。大多数情况下,我想知道您将如何组合然后拆分一对张量,以便可以在此方法中使用它。
【问题讨论】:
-
您当前的尝试出了什么问题?如果有回溯,请完整发布!
-
对此感到抱歉。添加了堆栈跟踪。我只是假设,因为它似乎是一个如此简单的问题,所以问题很明显。我不完全确定我会以最好的方式解决这个问题。
标签: image python-3.x tensorflow