OpenCV Python iNoRead方法在C++ MODU中引起错误

2024-09-29 01:34:46 发布

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

当我调用我的方法[given after the error]时,出现以下错误。在

error: /feedstock_root/build_artefacts/opencv_1496434080029/work/opencv-3.2.0/modules/core/src/arithm.cpp:1984: error: (-215) lb.type() == ub.type() in function inRange

生成代码的代码就在这里。我没有发现我提供给函数cv2.inRange的代码有任何问题

^{pr2}$

你知道是什么问题吗?我在其他相关问题中找不到解决办法:Question 1&;Question 2


Tags: the方法代码buildtype错误errorroot
1条回答
网友
1楼 · 发布于 2024-09-29 01:34:46

让我们从解释错误开始:

lb.type() == ub.type() in function inRange

这意味着它在检查函数inRange中的下界(lb)和上限(up)是否属于同一类型的assert中失败。在

看看你的代码,上限看起来像是整数:

^{pr2}$

现在,下界有2个变量,我不知道它们是什么(float、int等)。我假设它们是浮点数,让我们看看如果我放两个浮点数会发生什么。在

lower_red  = np.array([0, 1.2, 2.7])
print (lower_red .dtype) # this prints out dtype('float64')

正如你所见,它们不是同一类型的。既然问题已经解释清楚了,让我们继续讨论可能的解决方案:

最简单的一个,如果您想截断它:

lower_red  = np.array([0, 1.2, 2.7], dtype=np.int32)
print (lower_red.dtype) # this prints out dtype('int32')
print (lower_red) # [0, 1, 2]

这将产生相同的结果:

lower_red  = np.array([0, int(1.2), int(2.7)])

如果你不想被截断,你可以做圆形或天花板(地板与截断相同)。在

例如:

avg_saturation = int(np.round(average_saturation(hsv_image)))

或者如果它是非负的:

avg_saturation = int( average_saturation(hsv_image) + 0.5 )

相关问题 更多 >