我将 OpenCV 用于各种对象检测器,我发现编写可移植代码很困难。
例如,要加载面部检测器,在通过自制软件安装 OpenCV 的 Mac 上,我必须编写:
haar=cv.Load('/usr/local/Cellar/opencv/2.4.2/share/OpenCV/haarcascades/haarcascade_frontalface_default.xml')
这不是便携式的;如果我想更改为另一台机器,我将不得不确定另一个绝对路径并更改此代码。
是否有一个变量保存 OpenCV 的 OpenCV 根?这样我就可以写出类似的东西:
haar=cv.Load(os.path.join(OpenCVRoot, "haarcascades",
"haarcascade_frontalface_default.xml"))
更新:看起来这对我来说不仅仅是一个问题;这也是 OpenCV 文档的问题。该文档包含以下损坏的示例代码:
>>> import cv
>>> image = cv.LoadImageM("lena.jpg", cv.CV_LOAD_IMAGE_GRAYSCALE)
>>> cascade = cv.Load("../../data/haarcascades/haarcascade_frontalface_alt.xml")
>>> print cv.HaarDetectObjects(image, cascade, cv.CreateMemStorage(0), 1.2, 2, 0, (20, 20))
[((217, 203, 169, 169), 24)]
如果有一种方法可以推断出 lena.jpg 和预训练分类器等示例的安装位置,那么这将很容易避免。
来源: http: //opencv.willowgarage.com/documentation/python/objdetect_cascade_classification.html(检索 3/5/13)