我正在从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)
我认为参数的顺序不对。cv2文档按以下顺序显示它们:cv2.cvtColor(src, code[, dst[, dstCn]])
,这与cv中的顺序不同,其中的顺序为:cv.CvtColor(src, dst, code)
。
因此,基于此,再加上另一个答案中关于颜色转换常数名称更改的信息,您需要使用:
cv2.cvtColor(img, cv2.COLOR_BGR2LAB, img)
您正在寻找这个常量
cv.CV_BGR2Lab --> cv2.COLOR_BGR2LAB
所有其他用于颜色转换的常数都遵循类似的模式
cv.CV_<CONSTANT> --> cv2.COLOR_<CONSTANT>
我仍然没有找到一个好的来源(甚至是文档(来确定如何翻译常量。
更新:有关常量的详细信息,请参阅此处和此处的讨论。