HSV2BGR conversion fails in Python OpenCV script
Question: My script is supposed to take a greyscale image and map the values to hues.

    
    
    #!/usr/bin/env python
    
    import cv2
    import numpy
    
    infile = cv2.imread('Lenna.png')
    
    infile = infile[:,:,0]
    
    hues = (numpy.array(infile)/255.)*179
    
    outimageHSV = numpy.array([[[b,255,255] for b in a] for a in hues]).astype(int)
    
    outimageBGR = cv2.cvtColor(outimageHSV, cv2.COLOR_HSV2BGR)
    
    cv2.imshow('dst_rt', outimageBGR)
    cv2.waitKey(0)
    cv2.destroyAllWindows()
    

It fails on the line with cvtColor and I get this error:

    
    
    OpenCV Error: Assertion failed (depth == CV_8U || depth == CV_16U || depth == CV_32F) in cvtColor, file /tmp/opencv20150506-38415-u2kidu/opencv-2.4.11/modules/imgproc/src/color.cpp, line 3644
    Traceback (most recent call last):
      File "luma2hue.py", line 16, in <module>
        outimageBGR = cv2.cvtColor(outimageHSV, cv2.COLOR_HSV2BGR)
    cv2.error: /tmp/opencv20150506-38415-u2kidu/opencv-2.4.11/modules/imgproc/src/color.cpp:3644: error: (-215) depth == CV_8U || depth == CV_16U || depth == CV_32F in function cvtColor
    

Do I need to do something else to my outimageHSV array to make it ready for
cvtColor?


Answer: The error message implies that cv2.cvtColor expects an image with a (color)
depth of 8 or 16 bit unsigned int (8U, 16U) or 32 bit float (32F). Try
changing `astype(int)` to `astype(numpy.uint8)`

