Python 张量流中的等效填充多边形
Tensorflow API是否有一个与OpenCV等效的函数,或者另一个可以在黑色背景上绘制填充边界框的函数。使用Python 张量流中的等效填充多边形,python,opencv,tensorflow,Python,Opencv,Tensorflow,Tensorflow API是否有一个与OpenCV等效的函数,或者另一个可以在黑色背景上绘制填充边界框的函数。使用tf.bitwise\u和仅保留原始图像中的填充框。我已经试过了,但是我需要用这个函数在我的框上迭代,我不能,因为形状是(无,4) 编辑: 这是我代码的一部分 res = tf.gather(boxes,true_indices) #My boxes shape (None,4) back = tf.get_variable("bac
tf.bitwise\u和
仅保留原始图像中的填充框。我已经试过了,但是我需要用这个函数在我的框上迭代,我不能,因为形状是(无,4)
编辑:
这是我代码的一部分
res = tf.gather(boxes,true_indices) #My boxes shape (None,4)
back = tf.get_variable("back", shape=image.shape, dtype=tf.uint8,
initializer=tf.zeros_initializer(), trainable=False) #Represent background
def my_func(x):
casted_boxes = tf.cast(x, dtype=tf.int32)
casted_img = tf.image.convert_image_dtype(image, dtype=tf.uint8)
cropped_image = tf.image.crop_to_bounding_box(casted_img, casted_boxes[1],casted_boxes[0],
casted_boxes[3] - casted_boxes[1], casted_boxes[2] - casted_boxes[0])
return back[casted_boxes[0]:, casted_boxes[1]:, :].assign(cropped_image) #Here I get a problem
r = tf.map_fn(my_func, res, tf.uint8)
通过上面的代码,我得到:AttributeError:“Operation”对象没有属性“\u c\u op”
我不确定我是否完全理解了你的意思,所以如果我没有领会你的意思,请澄清
我相信您需要使用tf.map\fn
在多个框上执行操作tf.map_fn
将对数据中的每个元素应用一组tensorflow操作(通过将它们返回为映射函数来定义)
在本例中,边界框的形状为[None,4]
。在运行时,它们会有一些形状,例如,如果您有42个边界框,则该形状将是[42,4]
tf.map\u fn
在这种情况下,将沿着42个边界框的第一个维度解压边界框,并将从map函数返回的任何操作应用于每个边界框,并返回连接结果。请发布您的代码。为什么tf会包括图像绘制函数。。?为什么不直接使用OpenCV函数呢?因为图像的形状在运行时之前设置为“无”,因为我使用了Dataset API和TFRecords。我尝试使用map_fn,但在分配次张量(参见我的编辑)时出现错误,我无法立即看到如何修复它,但是我相信在map\u fn
中使用变量是问题的根源。您应该使用操作生成图像,而不是使用my\u func
中的变量。毕竟,该功能将并行运行。