我正在尝试编写一个程序,打开图像并扫描其中的圆形/圆形轮廓,并返回其坐标,以便我可以使用
我的问题是:如何使用
使用这个网页,我找到了如何检测圆的方法(这花费了我很长时间去了解,因为我不理解阈值等术语,而且Python的OpenCV文档非常贫乏,几乎没有)。不幸的是,在那个页面上它没有展示如何从创建的
这是我目前代码:
cv.Circle
函数在检测到的圆上绘制圆圈。我的问题是:如何使用
cv.HoughCircles()
获取图像中检测到的圆的坐标/半径?使用这个网页,我找到了如何检测圆的方法(这花费了我很长时间去了解,因为我不理解阈值等术语,而且Python的OpenCV文档非常贫乏,几乎没有)。不幸的是,在那个页面上它没有展示如何从创建的
CvMat
中提取每个检测到的圆的信息。如何提取这些信息/是否有其他方式(例如使用MemoryStorage()
)?这是我目前代码:
import cv, opencv
def main():
im = cv.LoadImageM("Proba.jpg")
gray = cv.CreateImage(cv.GetSize(im), 8, 1)
edges = cv.CreateImage(cv.GetSize(im), 8, 1)
cv.CvtColor(im, gray, cv.CV_BGR2GRAY)
cv.Canny(gray, edges, 50, 200, 3)
cv.Smooth(gray, gray, cv.CV_GAUSSIAN, 9, 9)
storage = cv.CreateMat(im.rows, 1, cv.CV_32FC3)
cv.HoughCircles(edges, storage, cv.CV_HOUGH_GRADIENT, 2, gray.height/4, 200, 100)
# Now, supposing it found circles, how do I extract the information?
print storage.r
if __name__ == '__main__':
main()
此外,为了检测到非常小(例如屏幕上3mm)的圆,HoughCircles
的最后两个参数需要具有什么值?
谢谢大家花时间和努力帮助我!
我正在处理的图像是这样的: