检测帧的特定区域中的对象

时间:2017-09-16 09:33:32

标签: python opencv tensorflow

我想使用tensorflows对象检测api检测帧区域中的对象。我已将帧拆分为region_1和region_2,但如何仅在frame_1中执行检测并仅在region1中绘制矩形

   <p>this is paragraph 1</p>
  <p>this is paragraph 2</p>
  <p>this is paragraph 3</p>

1 个答案:

答案 0 :(得分:1)

你必须用你感兴趣的地区替换之前的image_np,所以改变

image_np_expanded = np.expand_dims(image_np, axis=0)

为:

image_np_expanded = np.expand_dims(region_1, axis=0)

vis_util.visualize_boxes_and_labels_on_image_array(
    image_np,
    np.squeeze(boxes),
    np.squeeze(classes).astype(np.int32),
    np.squeeze(scores),
    category_index,
    use_normalized_coordinates=True,
    line_thickness=1)
return image_np

为:

vis_util.visualize_boxes_and_labels_on_image_array(
        region_1,
        np.squeeze(boxes),
        np.squeeze(classes).astype(np.int32),
        np.squeeze(scores),
        category_index,
        use_normalized_coordinates=True,
        line_thickness=1)
return region_1

如果要返回原始图像,只需在region_1一侧绘制框,则必须将框架坐标从region_1的尺寸转换回原始图像尺寸(这很难给出不同的数据类型tf用于他们的np.arrays)或concatenate区域重新组合在一起: 垂直堆叠(img1 over img2):

vis = np.concatenate((img1, img2), axis=0)

水平堆叠(img2左侧的img1):

vis = np.concatenate((img1, img2), axis=1)