OpenCV 3.1 cv2.stereoCalibrate TypeError:需要整数

2024-10-01 11:23:51 发布

您现在位置:Python中文网/ 问答频道 /正文

最近,我成功地编译了最新的opencv3.1并支持cuda。 经过一番修补之后,我将我的大部分python代码从2.4.x正确地转换为3.1.x,没有任何问题。在

但当需要尝试stereCalibrate功能时,出现了错误:

Exception in thread Thread-5:
Traceback (most recent call last):
  File "/usr/lib/python2.7/threading.py", line 801, in __bootstrap_inner
    self.run()
  File "/usr/lib/python2.7/threading.py", line 754, in run
    self.__target(*self.__args, **self.__kwargs)
  File "./stereo_compute.py", line 245, in calibrate
    flags)
TypeError: an integer is required

以下是我如何称呼函数本身:

^{pr2}$

所有的东西都在一个线程中运行,这就是为什么在异常中提到它。在

我找不到一组正确的参数。在

此外,我在2.4.x版本下使用相同的数据集进行了调用。在

请帮忙!在


Tags: run代码inpyself功能libusr
1条回答
网友
1楼 · 发布于 2024-10-01 11:23:51

我注意到,对于OpenCV的Python绑定,如果一个函数有一个具有默认值的参数,比如None,那么通常不能显式地将该参数与其默认值一起使用。这完全违反了常规的Python约定和预期行为。在

例如,函数cv2.goodFeaturesToTrack的参数blockSize具有默认值None,因此您可能希望调用

cv2.goodFeaturesToTrack(image=img, maxCorners=10, qualityLevel=0.1, minDistance=10, mask=None, blockSize=None)

会和

^{pr2}$

但实际上,第一种使用此函数的方法将导致

TypeError: an integer is required

因此,使用OpenCV,要么不提供and参数,要么提供正确的值(根据Python函数/方法签名,默认值可能不正确)。在

<>你必须检查C++源找到实际的默认值。在

相关问题 更多 >