我想在深度学习的基础上,计算两个检测器从多幅图像中检测出的矩形的比例。例如,在下图中,首先,第一个检测器检测大圆(c1和c2),第二个检测器检测小圆(d1和d2)。现在,第一个检测器返回c1和c2的坐标,第二个检测器也返回d1和d2的坐标。
c1坐标(xmin, ymin, xmax, ymax):(10, 10, 30, 30)d1坐标:(13, 15, 20, 23)
c2坐标:(20, 20, 40, 40)d2坐标:(25, 24, 32, 33)
但是,我不知道OpenCV和python的许多功能。你能做一些代码、函数或推荐库吗?
非常感谢。
通常用于此任务的度量是“联合上的交集”,即IOU。
使用此格式的边框(矩形)输入[50、60、200、150]
,您可以像这样为其编写自定义函数-
def intersection_over_union(box1, box2):
# Get coordinates of the intersection
x1 = max(box1[0], box2[0])
y1 = max(box1[1], box2[1])
x2 = min(box1[2], box2[2])
y2 = min(box1[3], box2[3])
# Get the area of intersection rectangle
intersection = max(0, x2 - x1 + 1) * max(0, y2 - y1 + 1)
# Get the area of both rectangles
box1Area = (box1[2] - box1[0] + 1) * (box1[3] - box1[1] + 1)
box2Area = (box2[2] - box2[0] + 1) * (box2[3] - box2[1] + 1)
iou = intersection / float(box1Area + box2Area - intersection)
return iou
请注意,这需要以标准格式返回边界框,其中以下条件正确:
assert box1['x1'] <= box1['x2']
assert box1['y1'] <= box1['y2']
assert box2['x1'] <= box2['x2']
assert box2['y1'] <= box2['y2']
更多的细节在这个答案。
如果边界框对不满足该条件,最好使用sklearn的jaccard_score(IOU的另一个名称)
from sklearn.metrics import jaccard_score
import numpy as np
box1 = [180, 400, 450, 450]
box2 = [200, 450, 425, 425]
img = np.zeros((800, 800, 3), np.uint8) # use your image shape here or directly below
img1 = cv2.rectangle(np.zeros(img.shape), (box1[0], box1[1]), (box1[2], box1[3]), (1, 1, 1), -1)
img2 = cv2.rectangle(np.zeros(img.shape), (box2[0], box2[1]), (box2[2], box2[3]), (1, 1, 1), -1)
jaccard_score(img1.ravel(),img2.ravel())
我正在做一个游戏,在这个游戏中,玩家必须用一个碗来接住掉落的物品。我有一些列表中项目的图像和一个用来捕捉项目的碗的图像。这些项目会持续下降,如果它们到达边界(底部边缘),则会重置到屏幕顶部。我完成了这个逻辑,允许物品落下,但我不知道如何检测碗和物品之间的碰撞。 我的代码:
我已经了解了如何使用PIL检测图像中的边缘(图像大部分是白色背景和黑色绘图标记)。如何检测包含这些边的矩形,以便裁剪图像。 例如,我想裁剪如下内容: 成: 或者这个: 成: 我熟悉PIL中的裁剪,但不知道如何围绕对象自动居中。 我已通过执行以下操作来检测边缘: 如何得到包含所有这些边的矩形?
本文向大家介绍使用OpenCV检测图像中的矩形,包括了使用OpenCV检测图像中的矩形的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了OpenCV检测图像中矩形的具体代码,供大家参考,具体内容如下 前言 1.OpenCV没有内置的矩形检测的函数,如果想检测矩形,要自己去实现。 2.我这里使用的OpenCV版本是3.30. 矩形检测 1.得到原始图像之后,代码处理的步骤是: (1)滤波
问题内容: 这个问题已经在这里有了答案 : 8年前关闭。 可能重复: Python:如何查找列表交集? 我在.txt中有两个数据列表 我想找出在两个列表中都出现的名字。我该怎么做? 问题答案: 使用集: 该运营商表示“给我这两个集合的交集” 或者,您可以使用以下方法:
问题内容: 我正在写的游戏中有两个角色,玩家和敌人。定义如下: 然后用: 我可以使用键盘来移动player(),但是在尝试检测两者之间的碰撞时我很茫然。很多人说过要使用Rectangles,但是作为一个初学者,我看不到如何将其链接到现有代码中。谁能为我提供一些建议? 问题答案: 我认为您的问题是您没有为球员和敌人使用好的OO设计。创建两个类: 您的播放器应具有X,Y,Width和Height变量。
问题内容: 我正在尝试匹配两个图像的直方图(在MATLAB中,这是可以做到的) 使用 ). 标准Python库中是否有可用的等效函数?我已经 查看了OpenCV、scipy和numpy,但没有看到任何类似的功能。 问题答案: 我以前写过一个答案 这里解释如何做 图像直方图的分段线性插值 高光/中音/阴影的特定比率。 相同的基本原则是[直方图]的基础 匹配两人之间 图像。基本上,你要计算出你的源和目
我需要帮助来识别边界,并将图像与原始图像进行比较。我需要指导如何我可以实现这通过处理或matlab或任何初学者。例如,请看下面的图像。 原始图像:
为了得到第一个/第二个摄像机的P(第一个摄像机在新的(校正)坐标系中输出3x4投影矩阵),我们可以使用以下方法:-->-->,就这样:为什么我们需要同时输入(camera_matrix1&2)和(R和T)参数来进行立体校正()? 但是如果我没有:obj_corners,img_corners,distortion_coeffs,R,t,但是我已经有两个未失真的图像和两个CameraParams,我