Opencv NMS的完整攻略
Opencv NMS(Non-Maximum Suppression)是一种常用的目标检测技术,可以用于去除重叠的检测框,提高检测的准确性。本文将详细讲解Opencv NMS的完整攻略,包括基本原理、方法和两个示例。
Opencv NMS的基本原理
Opencv NMS是一种基于非极大值抑制的目标检测技术,通过去除重叠的检测框,提高检测的准确性。具体实现方法包括:
- cv2.dnn.NMSBoxes函数:用于去除重叠的检测框。
Opencv NMS的使用方法
Opencv库提供cv2.dnn.NMSBoxes函数,可以用于去除重叠的检测框。函数的基本语法如下:
indices = cv2.dnn.NMSBoxes(boxes, scores, score_threshold, nms_threshold)
其中,boxes表示输入的检测框,scores表示输入的检测框得分,score_threshold表示得分的阈值,nms_threshold表示重叠的阈值,indices表示输出的保留的检测框的索引。
示例说明
下面是两个Opencv NMS的示例:
示例1:使用NMSBoxes函数去除重叠的检测框
import cv2
import numpy as np
# 读取图像
img = cv2('test.jpg')
# 定义检测框和得分
boxes = np.array([[50, 50, 100, 100], [60, 60, 120, 120], [70, 70, 140, 140]])
scores = np.array([0.9, 0.8, 0.7])
# 使用NMSBoxes函数去除重叠的检测框
indices = cv2.dnn.NMSBoxes(boxes, scores, 0.5, 0.4)
# 绘制保留的检测框
for i in indices:
i = i[0 box = boxes[i]
cv2.rectangle(img, (box[0], box[1]), (box[2], box[3]), (0, 255, 0), 2)
# 显示原始图像和去除重叠的检测框后的图像
cv2.imshow('image', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
运行该代码系统会显示原始图像和去除重叠的检测框后的图像。
示例2:使用NMSBoxes函数去除重叠的检测框
import cv2
import numpy as np
# 读取图像
img = cv2.imread('test.jpg')
# 定义检测框和得分
boxes = np.array([[50, 50, 100, 100], [60, 60, 120, 120], [70, 70, 140, 140]])
scores = np.array([0.9, .8, 0.7])
# 使用NMSBoxes函数去除重叠的检测框
indices = cv2.dnn.NMSBoxes(boxes, scores,0.5, 0.4)
# 绘制保留的检测框
for i in indices:
i = i[0]
box = boxes[i]
cv2.rectangle(img, (box[0], box1]), (box[2], box[3]), (0, 255, 0), 2)
# 显示原始图像和去除重叠的检测框后的图像
cv2.imshow('image', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
运行该代码,系统会显示原始图像和去重叠的检测框后的图像。
结论
Opencv NMS是一种基于非极大值抑制的目标检测技术,通过去除重叠的检测框,提高检测的准确性。通过Opencv中的cv2.dnn.NMSBoxes函数,可以实现去除重叠的检测框通过本文介绍,应该已经了解了Opencv NMS的基本原理、方法和两个示例说明,根据需要灵活使用。