2017-10-13 16 views
-1

这里:传递参数时,蟒蛇/ OpenCV的功能,给参数的名字,而不是导致不同的结果,为什么

import cv2 
import numpy as np 

im = cv2.imread('eye.png') 
im_gray = cv2.cvtColor(im, cv2.COLOR_BGR2GRAY) 
circles = cv2.HoughCircles(im_gray, cv2.HOUGH_GRADIENT, 1, 100, 100, 30, 120, 180) 
circles = cv2.HoughCircles(im_gray, cv2.HOUGH_GRADIENT, 1, 100, param1=100, param2=30, minRadius=120, maxRadius=180) 

两个cv2.HoughCircles得到不同的结果的函数调用,第一个检测不圆,但第二个得到一个圆圈。为什么?

此外,OpenCV的文档中,这里是函数表达式:

cv2.HoughCircles(图像,方法,DP,minDist [,圆圈[,参数1 [, param2的[,minRadius [,maxRadius] ]]]])→圈

这些括号是什么意思?

+1

@xyres尽管问题的一个组成部分可能是相关的,但总的来说,我认为问题是位置参数和命名参数的混合。 – ryachza

回答

2

括号表示里面是可选的。

基于该文档:

cv2.HoughCircles(图像,方法,DP,minDist [,圆圈[,参数1 [,参数2 [,minRadius [,maxRadius]]]]])→圆

你的第一个电话是使用这些参数,而忽略了maxRadius

circles = cv2.HoughCircles(
    im_gray,   # image 
    cv2.HOUGH_GRADIENT, # method 
    1,     # dp 
    100,    # minDist 
    100,    # circles 
    30,     # param1 
    120,    # param2 
    180     # minRadius 
         # maxRadius 
) 

使用这些参数,而忽略了你的第二个电话:

circles = cv2.HoughCircles(
    im_gray,   # image 
    cv2.HOUGH_GRADIENT, # method 
    1,     # dp 
    100,    # minDist 
         # circles 
    param1=100,   # param1 
    param2=30,   # param2 
    minRadius=120,  # minRadius 
    maxRadius=180  # maxRadius 
) 
相关问题