在下面的代码中,我正在尝试实现阈值处理,但我需要为每种类型的阈值更改图像的数据类型(numpy 数组),因为我收到了错误。
a = cv.threshold(img.astype('uint8'), 100, 255, cv.THRESH_BINARY)[1]
b = cv.threshold(img.astype('uint8'), 0, 255, cv.THRESH_OTSU)[1]
错误是这样的,
OpenCV(4.8.1) D:\a\opencv-python\opencv-python\opencv\modules\imgproc\src\thresh.cpp:1659: error: (-210:Unsupported format or combination of formats) in function 'cv::threshold'
有没有办法解决这个问题,而不会在每次运行 opencv 中的函数并且使用的格式不受支持时出现错误?
好吧,据我了解,问题是方法需要包含
numpy
值的 uint8
数组,并且你有 int32
。因此,您必须使用 array.astype(np.uint8)
更改它的类型,以便可以将其作为参数传递给方法。如果您只想执行一次,只需创建包含新类型数组的新变量即可。
现在,如果您想将图像加载为
uint8
,考虑到用于存储图像的库和数据格式的限制,您可能会或可能不会这样做。