Opencv NMS

  • Post category:Python

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的基本原理、方法和两个示例说明,根据需要灵活使用。