函数在RaspberryPi上不起作用,但在计算机上起作用

时间:2019-10-16 09:14:05

标签: python-3.x opencv raspberry-pi typeerror

我正在尝试在Raspberry Pi 3上运行Python3代码,但出现了奇怪的错误。

我的电话是:

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

一旦我在计算机上编译它,它就会很好用,当我在Raspberry Pi上编译它时,我会收到错误消息:

  

“ valueError:太多值无法解包(预期2)”

当我删除“ cv2.CHAIN_APPROX_SIMPLE”

我遇到了错误:

  

“ TypeError:找不到必需的参数“方法”(位置3)”

还有其他方法可以使其在Raspberry Pi上运行吗?

谢谢

1 个答案:

答案 0 :(得分:1)

我的猜测是,您的计算机和Raspberry Pi上都有不同的OpenCV版本。

4.0.0之前的任何OpenCV版本都具有以下syntax

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

从4.0.0开始的所有OpenCV版本都具有syntax

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

所以,看来您的计算机上有一些OpenCV 4.x.x,但是在Raspberry Pi上有一些OpenCV 3.x.x甚至是2.x.x。如果是这样,显然您应该尝试在两个设备上同步使用的OpenCV版本。

编辑:正如FlyingTeller在他的comment中指出的那样,实际错误是,对于4.0.0之前的任何OpenCV版本,cv2.findContours(...)都会生成三个值的元组,您尝试将其解压缩为两个变量,这是不可能的。因此,它与您提供给cv2.findContours(...)的参数数量无关。

希望有帮助!