Python 如何选择OpenCV级联训练的纵横比?

Python 如何选择OpenCV级联训练的纵横比?,python,opencv,image-processing,Python,Opencv,Image Processing,我即将在OpenCV中进行数字板识别系统的培训。 我正在运行Python 2.7/Ubuntu 12.04/OpenCV(Python绑定) 通过sudo apt get install python opencv安装 我已将所有图像标记如下: images/img000.jpg 1 112 132 203 54 images/img000.jpg 1 112 132 217 47 Note : 203 x 54 has aspect ratio 3.73 Note : 217 x 47 ha

我即将在OpenCV中进行数字板识别系统的培训。 我正在运行Python 2.7/Ubuntu 12.04/OpenCV(Python绑定) 通过sudo apt get install python opencv安装

我已将所有图像标记如下:

images/img000.jpg 1 112 132 203 54
images/img000.jpg 1 112 132 217 47

Note : 203 x 54 has aspect ratio 3.73
Note : 217 x 47 has aspect ratio 4.56
或者在一般意义上:

image_dir/filename [#num of bounding rects] x y width height
当我使用以下参数运行opencv_createsamples时,我没有问题,程序运行正常,可以创建samples.vec文件: (见附件)

在我给出的示例中,我们注意到两个数字板的大小相似,但长宽比不同。

现在,如果我有纵横比在3.5和4.5之间的对象,如何选择-w和-h值来创建样本?

  • 我可以使用最小或最大纵横比
  • 我可以用平均纵横比吗
我担心如果我将这些值建立在较短的板上,一些较长的板会被切断(水平),如果我将这些值建立在较长的板上,一些较短板的高度可能会被切断(垂直)。也许我的想法是错误的


注意:我知道-w和-h应该小于您想要识别的最小板。

通常,您不希望对象的纵横比变化太大。如果这样做,则可能根本无法检测到纵横比“错误”的对象,并且您可能需要训练多个检测器,而不是一个检测器。但是如果方差不是太大,我会使用中间的纵横比。事实上,Matlab计算机视觉系统工具箱中的
trainCascadeObjectDetector
函数将为您实现这一点

opencv_createsamples -info samples.dat -vec samples.vec -w 144 -h 50