我正在開發虹膜相關生物識別的概念證明算法。我希望能夠在一系列圖像上進行測試,但爲了做到這一點,我需要了解虹膜邊界。按照使用的技巧here,我已經過濾和智能化閾值圖像(大津的方法),這留下了我瞳孔的黑圈。我試圖使用OpenCV的HoughCircles
方法,但非C(++)文檔很少。這裏是我的代碼迄今爲這部分。:如何訪問Python中的OpenCV HoughCircles結果?
# Convert PIL to openCV type
cvImage = cv.CreateImageHeader(inputImage.size, cv.IPL_DEPTH_8U, 1)
cv.SetData(cvImage, inputImage.tostring())
self.cvSize = cv.GetSize(cvImage)
# Create storage for circles (there should only be one)
storage = cv.CreateMat(50, 1, cv.CV_32FC3)
# Get circles (why doesn't this work?)
circles = cv.HoughCircles(cvImage,storage,cv.CV_HOUGH_GRADIENT,2,(self.cvSize[0])/4,200,100);
最後一行是有問題的路線。我跟着在互聯網上傳播的幾篇文章(大部分是針對C/C++或者5歲以上的),並設法提出了這條線。它不會返回任何錯誤。我如何訪問結果?我可以訪問circles
或storage
。我如何訪問它們?我已經嘗試了this question的建議,但是,正如提問者所說,cvMat
類型是不可迭代的,所以它不起作用。看起來編寫我自己的循環Hough變換不是處理這個庫的稀疏文檔,但我認爲它很簡單,我錯過了。
在附註上,我該如何優化參數以便在合理的時間內爲學生始終返回一個適合的圓圈?
的'circles'對象[看起來應該可迭代(http://opencv.willowgarage.com/wiki/PythonInterface# CvSeq)。 – sarnold