【问题标题】:Opencv error -Unsupported depth of input image:Opencv 错误 - 不支持的输入图像深度:
【发布时间】:2019-08-06 08:43:20
【问题描述】:

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

这是基本代码

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。

我也搜索了 StackOverflow,但找不到任何信息来调试它。 我不明白这个错误的含义以及如何纠正它。

【问题讨论】:

  • 您的图像类型是CV_64F (float64),cvtColor 函数不支持。将图像转换为适当的类型,例如float32
  • 有没有一种简单的方法可以将其转换为float32。
  • 像任何其他numpy数组一样,astype
  • 我试过了normal_image[:,:,0] = normal_image[:,:,0].astype(np.float32) normal_image[:,:,1] = normal_image[:,:,1].astype(np.float32) normal_image[:,:,2] = normal_image[:,:,2].astype(np.float32) 错误仍然存​​在。
  • 有没有其他方法。我仍然收到错误@Miki

标签: python opencv image-processing opencv3.0


【解决方案1】:

根据这个回答https://stackoverflow.com/a/45956247/7683041,试试:

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

【讨论】:

    猜你喜欢
    • 2021-07-28
    • 2021-11-24
    • 2019-08-03
    • 2020-05-05
    • 1970-01-01
    • 1970-01-01
    • 2013-10-06
    • 2015-02-08
    相关资源
    最近更新 更多