Opencv 错误 - 不支持的输入图像深度:

Opencv error -Unsupported depth of input image:

我正在尝试将标准化的 RGB 图像转换为 HSV 或 LAB 颜色 space。 这是归一化函数:

这是基本代码

print ('original image shape: ', image.shape)
print ('normlaised image shape: ', needed_multi_channel_img.shape)
# Converting to LAB color space


lab_image = cv.cvtColor(needed_multi_channel_img, cv.COLOR_RGB2HSV)

cv.imshow('Lab_space.jpg',lab_image.astype('float32'))
cv.waitKey(0)
cv.destroyAllWindows()

这是输出轨迹:

    /home/centura/gitlab/Acne_model/Acne Model/rosaceaexperiment1.py:82: RuntimeWarning: invalid value encountered in true_divide
  norm.append(image[i,j,a]/rooted_matrix[i,j])
/home/centura/gitlab/Acne_model/Acne Model/rosaceaexperiment1.py:82: RuntimeWarning: divide by zero encountered in true_divide
  norm.append(image[i,j,a]/rooted_matrix[i,j])
original image shape:  (375, 600, 3)
normlaised image shape:  (375, 600, 3)
Traceback (most recent call last):
  File "/home/centura/gitlab/Acne_model/Acne Model/rosaceaexperiment1.py", line 121, in <module>
    lab_image = cv.cvtColor(needed_multi_channel_img, cv.COLOR_RGB2HSV)
cv2.error: OpenCV(3.4.3) /io/opencv/modules/imgproc/src/color.hpp:257: error: (-2:Unspecified error) in function 'cv::CvtHelper<VScn, VDcn, VDepth, sizePolicy>::CvtHelper(cv::InputArray, cv::OutputArray, int) [with VScn = cv::Set<3, 4>; VDcn = cv::Set<3>; VDepth = cv::Set<0, 5>; cv::SizePolicy sizePolicy = (cv::SizePolicy)2u; cv::InputArray = const cv::_InputArray&; cv::OutputArray = const cv::_OutputArray&]'
> Unsupported depth of input image:
>     'VDepth::contains(depth)'
> where
>     'depth' is 6 (CV_64F)

零除错误,我已经换成了0,nan也换成了0。

我也在Whosebug上搜索过,但没有找到调试的信息。 我不明白这个错误的含义以及如何纠正它。

根据这个答案,试试:

img_float32 = np.float32(needed_multi_channel_img)
lab_image = cv.cvtColor(img_float32, cv.COLOR_RGB2HSV)

我实际上遇到了类似的问题,问题是输入是浮点数,但需要整数。当我转换为整数 (.astype('int')) 时,此错误消失了。也许我也会帮助你。