鸿星尔克广告语
新手机第一次怎么充电对电池好非极大值抑制代码
非极大值抑制是一种常用于物体检测和边缘提取中的算法。其原理是在局部极值点附近抑制非极大值点,从而得到更加精确可靠的结果。以下是一份非极大值抑制的代码示例:蝾螈
```
import cv2
胆小反义词 import numpy as np
def non_max_suppression(boxes, overlapThresh):
# 初始化保留下来的边框列表
pick = []
# 获取边框的坐标值以及分数值
x1 = boxes[:, 0]
y1 = boxes[:, 1]
x2 = boxes[:, 2]
y2 = boxes[:, 3]
score = boxes[:, 4]
# 计算每个边框的面积
area = (x2 - x1 + 1) * (y2 - y1 + 1)
# 按照分数值从大到小排序
idxs = np.argsort(score)[::-1]
# 遍历所有边框
小学六年级语文
人力资源6大模块 while len(idxs) > 0:
# 取出分数值最大的边框,并将其加入保留列表中
i = idxs[0]
pick.append(i)
# 计算当前边框与其他边框的重叠部分的面积
xx1 = np.maximum(x1[i], x1[idxs[1:]])
yy1 = np.maximum(y1[i], y1[idxs[1:]])
xx2 = np.minimum(x2[i], x2[idxs[1:]])
yy2 = np.minimum(y2[i], y2[idxs[1:]])
w = np.maximum(0, xx2 - xx1 + 1)
春卷做法 h = np.maximum(0, yy2 - yy1 + 1)菜小
overlap = (w * h) / area[idxs[1:]]
# 将与当前边框重叠面积大于指定阈值的边框从列表中删除
idxs = np.delete(idxs, np.concatenate(([0], np.where(overlap > overlapThresh)[0])))
# 返回保留下来的边框列表
return pick
```
上述代码实现了一个名为non_max_suppression的函数,该函数接受两个参数:边框列表和重叠阈值。其中,边框列表是一个n x 5的数组,每行表示一个边框的坐标值(x1,y1,x2,y2)和分数值;重叠阈值是一个0到1之间的浮点数,用于指定重叠面积的阈值。
函数内部的实现过程是首先按照分数值从大到小排序,然后遍历所有边框,依次选取分数值最大的边框,并将其加入保留列表中。接着,计算当前边框与其他边框的重叠部分的面积,并将与当前边框重叠面积大于指定阈值的边框从列表中删除。最终,返回保留下来的边框列表。
上述代码可以用于物体检测和边缘提取等领域,可以帮助我们提取出更加精确可靠的结果。