我使用OpenCV的各種對象檢測器,我發現很難寫便攜式代碼。python: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"))
UPDATE:它看起來像這不只是對我一個問題;這對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(取自13年3月5日)
關於你的更新:它沒有壞;)這是因爲該文檔的作者正在opencv文件夾中運行python示例,所以他也使用相對路徑。這讓我回憶起3年前的一些回憶,我也對後面的相對位置感到困惑:) – 2013-03-05 16:24:01
如果我不能在解釋器的文檔中運行代碼,那麼它就會被破壞。 – 2013-03-05 17:49:27