如何在Python中访问OpenCV houghcirles结果?

2024-04-30 04:50:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在为虹膜相关生物识别技术开发一种概念验证算法。我想能够在一系列的图像上测试它,但是为了做到这一点,我需要知道虹膜的边界。根据所使用的技术,我对图像进行了过滤和智能阈值处理(Otsu的方法),只留下瞳孔的暗圈。我试图使用OpenCV的HoughCircles方法,但非C(++)文档很少。这是我到目前为止这部分的代码

# 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年以上),并设法想出了这一行。它不会返回任何错误。如何访问结果?我是否访问circlesstorage。如何访问它们?我试过this question的建议,但是,正如提问者所说,cvMat类型是不可接受的,所以它不会工作。似乎编写自己的循环Hough变换比处理这个库的稀疏文档要少一些工作,但是我认为我缺少了一些简单的东西。

另一方面,如何优化参数,以便在合理的时间内始终为学生返回一个合适的圆?


Tags: 方法文档图像self生物storagethiscv