gpt4 book ai didi

python - TensorFlow对象检测API仅在框架的指定区域内(在输入框架中定义ROI)

转载 作者:行者123 更新时间:2023-12-02 17:55:59 24 4
gpt4 key购买 nike

我正在使用TensorFlow对象检测API(https://github.com/tensorflow/models)进行自定义对象检测。
我已经在自定义对象检测上训练了我的模型,结果很好。
现在,我想在输入框中定义一个区域,即,仅在该定义的区域中,对象检测才应该起作用。在关注区域之外检测到的对象应被忽略。

import cv2
cap = cv2.VideoCapture('video.mp4')

def run_inference(model, cap):
while cap.isOpened():
ret, image_np = cap.read()
# Actual detection.
output_dict = run_inference_for_single_image(model, image_np)
# Visualization of the results of detection.
vis_util.visualize_boxes_and_labels_on_image_array(
image_np,
output_dict['detection_boxes'],
output_dict['detection_classes'],
output_dict['detection_scores'],
category_index,
instance_masks=output_dict.get('detection_masks_reframed', None),
use_normalized_coordinates=True,
line_thickness=8)
cv2.imshow('object_detection', cv2.resize(image_np, (800, 600)))
if cv2.waitKey(1) & 0xFF == ord('q'):
cap.release()
cv2.destroyAllWindows()
break

run_inference(detection_model, cap)
我尝试使用cv2函数折线在输入帧上定义线。
cv2.polylines(image, [pts], isClosed, color, thickness)
,但无法激活对象检测API使其仅在指定区域中起作用
预期的最终输出:在视频帧中,我应该将一个多边形框表示为关注区域(ROI),并且只要在ROI中检测到物体,它都应该为我提供边界框(在此ROI之外,可以忽略)

最佳答案

cv2.polylines()仅用于在图像上绘制线条,这只是视觉上的事情。
您可以按所需区域裁剪numpy图片image_np,然后将裁剪的img传递给tf

image_cropped = image_np[y_start:y_end, x_start:x_end]
有点不直观的是,当用numpy表示图像时,第一个索引是“y轴”,第二个索引是“x轴”。

关于python - TensorFlow对象检测API仅在框架的指定区域内(在输入框架中定义ROI),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64657450/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com