我正在尝试使用以下功能裁剪大量图像100,000。我是连续做这个操作,但是花了很多时间。有效的方法是什么?
tf.image.crop_to_bounding_box
以下是我的代码:
def crop_images(img_dir, list_images):
outlist=[]
with tf.Session() as session:
for image1 in list_images[:5]:
image = mpimg.imread(img_dir+image1)
x = tf.Variable(image, name='x')
data_t = tf.placeholder(tf.uint8)
op = tf.image.encode_jpeg(data_t, format='rgb')
model = tf.global_variables_initializer()
img_name = "img/"+image1.split("_img_0")[0] + "/img_0"+image1.split("_img_0")[1]
height = x.shape[1]
[x1,y1,x2,y2] = img_bbox_dict[img_name]
x = tf.image.crop_to_bounding_box(x, int(y1), int(x1), int(y2)-int(y1), int(x2)-int(x1))
session.run(model)
result = session.run(x)
data_np = session.run(op, feed_dict={ data_t: result })
with open(img_path+image1, 'w+') as fd:
fd.write(data_np)
答案 0 :(得分:1)
我将给出Tensorflow程序员指南中关于可以找到here的数据的一个示例的简化版本。基本上,它使用Reader和Filename Queues使用指定数量的线程将图像数据批处理在一起。这些线程使用所谓的线程协调器进行协调。
Reduce("rbind",lapply(a,
function(x) cbind(x$title,
x$label,
ifelse(length(x$description)==0,NA,x$description))))