使用cv2进行色彩空间转换

时间:2013-02-26 22:46:12

标签: python opencv

我正在从cv迁移到cv2,我很难找到等效的cv.CvtColor功能。

我在文档中读到cv2.cvtColor已存在,但我不知道如何使用第三个参数。

cv2.CV_BGR2Lab不存在。 cv2.CV2_BGR2Lab也没有,当我使用cv.CV_BGR2Lab时,我得到的只是一个错误:

cv2.cvtColor(img, img, cv.CV_BGR2Lab)

TypeError: only length-1 arrays can be converted to Python scalars

产生问题的一段简单代码:

img = cv2.imread(path)
cv2.cvtColor(img, img, cv.CV_BGR2Lab)

2 个答案:

答案 0 :(得分:6)

我认为你的参数输入顺序错误。 cv2 docs按此顺序显示cv2.cvtColor(src, code[, dst[, dstCn]]),与cv中的内容不同,其中订单为:cv.CvtColor(src, dst, code)

因此,基于此,以及关于颜色转换常量名称更改的其他answer中的信息,您需要使用:

cv2.cvtColor(img, cv2.COLOR_BGR2LAB, img)

答案 1 :(得分:5)

你正在寻找这个常数

cv.CV_BGR2Lab --> cv2.COLOR_BGR2LAB

所有其他颜色转换常量都遵循类似的模式

cv.CV_<CONSTANT> --> cv2.COLOR_<CONSTANT>

我仍然没有找到一个很好的来源(甚至是文档)来确定如何翻译常量。

<强>更新 有关常量的更多信息,请参阅讨论herehere