HOG+SVM训练时报错 OpenCV Error: Assertion failed

时间:2024-03-26 08:05:23

在HOG+SVM图片训练时,经常会看到一种报错信息:

OpenCV Error: Assertion failed (checkDetectorSize()) in cv::HOGDescriptor::setSVMDetector, file C:\builds\master_PackSlave-win64-vc12-shared\opencv\modules\objdetect\src\hog.cpp……

如:

HOG+SVM训练时报错 OpenCV Error: Assertion failed

其实这种错误是源自目标检测大小设置的不对,很多同学一开始训练HOG的时候没有注意HOG检测框是有大小设置的,这点和haar特征值训练不同。

如果大家去看下HOGDescriptor类在opencv中的源码,可以看出它是有默认值的,

默认构造函数的几个参数:

HOG+SVM训练时报错 OpenCV Error: Assertion failed

winSize : 窗口的大小

blockSize :块的大小

cellSize: 胞元的大小

nbins: 方向bin的个数

如果你训练时的目标大小是32x32的大小,而检测时变成了64x64或者干脆没有设置用默认的64x128,则会出现上述错误。只要在初始化HOGDescriptor的时候设置的没错问题就可解决,即将HOGDescriptor myHOG改为HOGDescriptor myHOG(Size(32, 32), Size(16, 16), Size(8, 8), Size(8, 8), 9)

顺便对于此处源码的解释贴两个还不错的博客:

https://blog.csdn.net/qq_26898461/article/details/46786285

https://www.cnblogs.com/lyx2018/p/7123794.html