2016-02-18 21 views
8

私のスクリプトは、グレースケール画像を取得し、値を色相にマッピングすることになっています。Python OpenCVスクリプトでHSV2BGR変換が失敗する

#!/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() 

それはcvtColorと行に失敗し、私はこのエラーを取得する:

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 

私はcvtColorできる状態にするための私のoutimageHSVアレイに何かを行う必要がありますか?

答えて

15

エラーメッセージは、cv2.cvtColorが、8ビットまたは16ビットの符号なし整数(8U、16U)または32ビット浮動小数点(32F)の画像を必要とすることを意味します。試してみるastype(int)astype(numpy.uint8)

2

outimageHSVをuint8としてキャストする必要があります。

import numpy as np 

outimageHSV = np.uint8(outimageHSV) 
outimageBGR = cv2.cvtColor(outimageHSV, cv2.COLOR_HSV2BGR) 
関連する問題