使用cv2进行颜色空间转换

1 投票
2 回答
9359 浏览
提问于 2025-04-17 17:14

我正在从 cv 转到 cv2,但在找 cv.CvtColor 函数的对应功能时遇到了困难。

我在文档中看到有 cv2.cvtColor 这个函数,但我不知道第三个参数该怎么用。

cv2.CV_BGR2Lab 这个东西不存在。cv2.CV2_BGR2Lab 也没有,当我用 cv.CV_BGR2Lab 时,结果只得到一个错误:

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

TypeError: 只能将长度为1的数组转换为Python标量

下面是一段简单的代码,能复现这个问题:

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

2 个回答

5

你在找这个常量

cv.CV_BGR2Lab --> cv2.COLOR_BGR2LAB

其他颜色转换的常量也大致遵循相似的模式

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

我还是没找到一个好的来源(甚至是文档),来确定这些常量是怎么转换的。

更新: 可以在 这里这里 查看关于常量的更多讨论。

6

我觉得你可能把参数的顺序搞错了。在cv2的文档中,参数的顺序是这样的:cv2.cvtColor(src, code[, dst[, dstCn]]),这和cv的文档中的顺序不一样,后者是:cv.CvtColor(src, dst, code)

所以,根据这些信息,还有其他回答中提到的颜色转换常量名称的变化,你需要使用:

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

撰写回答