python - 如何为 OpenCV 级联训练选择纵横比?

标签 python opencv image-processing

我即将在 OpenCV 中为车牌识别系统进行培训。 我正在运行 Python 2.7/Ubuntu 12.04/OpenCV(python 绑定(bind)) 通过 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 文件: (参见 Tutorial: OpenCV Haar Training)

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

现在在我给出的示例中,我们注意到两个车牌的尺寸相似,但纵横比不同。

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

  • 我可以使用最小或最大纵横比吗?
  • 我可以使用平均纵横比吗?

我担心如果我将这些值基于较短的盘子,一些较长的盘子会被切掉(水平),如果我将这些值基于较长的盘子,一些较短的盘子的高度可能会被切断(垂直)。也许我的想法甚至是错误的?

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

最佳答案

通常,您不希望对象的纵横比变化太大。如果是这样,则可能根本无法检测到纵横比“错误”的对象,并且您可能必须训练多个检测器而不是一个。但如果方差不是太大,我会使用中间长宽比。事实上,Matlab Computer Vision System Toolbox 中的 trainCascadeObjectDetector 函数将为您完成这项工作。

关于python - 如何为 OpenCV 级联训练选择纵横比?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18900206/

相关文章:

c - cvGet2D 和 cvSet2D 的用途?

python - CreateRemoteThread() 未按预期运行

python - 跨线程共享 Django 事务

c++ - 快速可靠的反射球检测方法

c - opencv calcHist错误

python - 使用 Python Flask AJAX 动态更新图像

python - 为什么代码更改时自动重新加载仅用于使用 Gunicorn 进行调试?

Python OpenCV 包与 Linux 不兼容?

python - 下载适用于 Pycharm 的 OpenCV