Получение ошибки при использовании opencv в блокноте jupyter: - PullRequest
2 голосов
/ 07 октября 2019

Обнаружена ошибка синтаксиса при использовании этого фрагмента кода:

kernel_1 = np.ones((5, 5), np.uint8)

img_open = cv2.morphologyEx(img, op= cv2.MORPH_OPEN,kernel_1)

Сообщение об ошибке:

img_open = cv2.morphologyEx (img, op = cv2.MORPH_OPEN, kernel_1)^ SyntaxError: позиционный аргумент следует за ключевым аргументом

Ответы [ 3 ]

0 голосов
/ 07 октября 2019

Вы не можете следовать позиционному аргументу после аргумента ключевого слова.

func(my_argu=True)  # keyword argument i.e. position doesn't matter. it always goes to my_argu
func(my_argh_1, my_arg_2)  # positional argument i.e. position/order matters

Таким образом, чтобы работать, вы не смотрите документацию:

cv.morphology(img, kernel_1, op=cv2.MORPH_OPEN)
or 
cv2.morphologyEx(img, cv2.MORPH_OPEN,kernel_1)
0 голосов
/ 07 октября 2019

in img_open = cv2.morphologyEx(img, op= cv2.MORPH_OPEN,kernel_1)

op= cv.MORPH_OPEN - аргумент ключевого слова, а img, kernel_1 - позиционный аргумент.

python не допускает аргумент ключевого слова перед позиционным аргументом

попробуйте cv2.morphologyEx(img, cv2.MORPH_OPEN,kernel_1)

0 голосов
/ 07 октября 2019

Ошибка из-за того, что вы используете оператор = для параметров, прежде чем kernal_1

python выдаст ошибку, если вы сделаете так, что решение будет пытаться это:

kernel_1 = np.ones((5, 5), np.uint8)

img_open = cv2.morphologyEx(img, kernel_1,op=cv2.MORPH_OPEN)

я незнать, будут ли правильными места расположения параметров, но когда это так, это решит вашу проблему

, иначе вы также можете сделать это:

img_open = cv2.morphologyEx(img, op= cv2.MORPH_OPEN,{parameter_name}=kernel_1)

, чтобы решить эту проблему

...