OpenCVcv.InRange
函数是否仅对RGB图像有效?我能用这个函数对灰度图像进行阈值化吗?
我发现一个错误,下面是我的代码:
import cv2
image=cv2.imread("disparitySGB.jpg")
thresh=cv2.inRange(image,190,255);
它给出以下错误:
thresh=cv2.inRange(image,190,255); TypeError: unknown is not a numpy array
我试着修复它:
thresh=cv2.inRange(image,numpy.array(190),numpy.array(255));
现在没有错误,但它会产生黑色图像。
对于形状(M,N)为numpy,大小为MxN且OpenCV中只有一个通道的灰度图像,
cv2.inRange
采用标量边界:但是对于在numpy中具有形状(M,N,3)和在OpenCV中具有三个通道的大小MxN的RGB图像,您需要使边界与“通道大小”匹配。
这在documentation中有解释,尽管不是很清楚。
将
src
作为数组,将lower
和upper
作为array
或scalar
,这意味着您可以使用它来阈值灰度图像。你只需要用scalars
来表示upper
和lower
。示例:
你只需要把numpy作为np导入,你的原始代码就可以正常工作了。
相关问题 更多 >
编程相关推荐