如何在张量流中使用裁剪大量图像

时间:2017-12-16 13:35:17

标签: python image-processing tensorflow

我正在尝试使用以下功能裁剪大量图像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)

1 个答案:

答案 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))))