2017-10-13 3 views
-1

ici:lors du passage des paramètres à la fonction python/OpenCV, donnant le nom de paramètres et non conduire à des résultats différents, pourquoi

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) 

Deux appels de fonction de cv2.HoughCircles obtenir des résultats différents, le premier détecte pas de cercle, mais la le second obtient un cercle. Pourquoi?

En outre, dans les documents de opencv, voici l'expression de la fonction:

cv2.HoughCircles (image, méthode, DP, MinDist [, cercles [, param1 [, param2 [, minRadius [, maxRadius] ]]]]) → cercles

Que signifient ces parenthèses?

+1

@xyres Bien qu'un composant de la question puisse être apparenté, dans l'ensemble je pense que le problème est le mélange de paramètres positionnels et nommés. – ryachza

Répondre

2

Les parenthèses indiquent que l'intérieur est facultatif.

Sur la base de cette documentation:

cv2.HoughCircles (image, méthode, dp, MinDist [, cercles [, param1 [, param2 [, minRadius [, maxRadius]]]]]) → cercles

Votre premier appel utilise ces paramètres, en laissant de maxRadius:

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

Votre deuxième appel utilise ces paramètres, en laissant de circles:

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 
)