Что означает levelWeights в opencv Detective MultiScale3?
Вот моя реализация HaarCascade, где я обучил свой собственный классификатор.
import cv2
import numpy as np
body_classifier = cv2.CascadeClassifier('C:\\Users\\Nemi\\MasteringComputerVision_V1.00\\Haarcascades\\trainedHuman.xml')
image = cv2.imread("twn2.jpg")
#####HEREEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE
bodies,rejectLevels, levelWeights = body_classifier.detectMultiScale3(
image,
scaleFactor=1.1,
minNeighbors=20,
minSize=(24, 24),
maxSize=(96,96),
flags = cv2.CASCADE_SCALE_IMAGE,
outputRejectLevels = True
)
print(rejectLevels)
print(levelWeights)
i = 0
font = cv2.FONT_ITALIC
for (x,y,w,h) in bodies:
cv2.rectangle(image,(x,y),(x+w,y+h),(255,0,255),2)
font = cv2.FONT_HERSHEY_SIMPLEX
#cv2.putText(image,str(i)+str(":")+str(np.log(levelWeights[i][0])),(x,y), font,0.5,(255,255,255),2,cv2.LINE_AA)
cv2.putText(image,str(levelWeights[i][0]),(x,y), font,0.5,(255,255,255),2,cv2.LINE_AA)
i = i+1
cv2.imshow("Detection",image)
cv2.waitKey(0)
cv2.destroyAllWindows()
В результате получается следующее:
Я хочу знать, что означает этот уровень и почему значение так мало? Если этот уровень веса можно использовать в форме окна достоверности обнаружения, что мне делать?
0 ответов
levelWights
возвращает уровень доверия определенной стадии. В твоем случае i
обнаружен ли объект и 0
означает 1-й этап. Возможно, он очень маленький, потому что объекты расположены слишком далеко, и классификатор изначально обучен захватывать объекты большего размера.