Функция не работает на RaspberryPi, но работает на компьютере - PullRequest
0 голосов
/ 16 октября 2019

Я пытаюсь запустить код Python3 на моем Raspberry Pi 3, и я получаю странную ошибку.

Моя строка:

contours, hier = cv2.findContours(fgmask, cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE)

Как только я компилирую егомой компьютер работает отлично, когда я компилирую его на Raspberry Pi, я получаю сообщение об ошибке:

"valueError: слишком много значений для распаковки (ожидается 2)"

Когда я удаляю "cv2.CHAIN_APPROX_SIMPLE"

Я получаю сообщение об ошибке:

"TypeError: Обязательный аргумент 'method' (поз. 3) notfound "

Есть ли другой способ заставить его работать на Raspberry Pi?

Спасибо

1 Ответ

1 голос
/ 16 октября 2019

Я полагаю, что на вашем компьютере и Raspberry Pi установлены разные версии OpenCV.

Любая версия OpenCV до 4.0.0 имеет следующий синтаксис :

image, contours, hierarchy = cv2.findContours(...)

Все версии OpenCV, начиная с 4.0.0, имеют синтаксис :

contours, hierarchy = cv2.findContours(...)

Итак, похоже, у вас есть какой-то OpenCV 4.xx на вашем компьютере, но, например,какой-нибудь OpenCV 3.xx или даже 2.xx на вашем Raspberry Pi. Если это так, то вам, очевидно, следует попытаться синхронизировать используемые версии OpenCV на обоих устройствах.

РЕДАКТИРОВАТЬ: Как FlyingTeller уже указывает в своем комментарии , фактическая ошибка, что cv2.findContours(...) для любой версии OpenCV до 4.0.0 генерирует кортеж из трех значений, которые вы пытаетесь распаковать в две переменные, что невозможно. Таким образом, это не имеет никакого отношения к числу параметров, которые вы предоставляете для cv2.findContours(...).

Надеюсь, что это поможет!

...