【问题标题】:How to convert an rgb image to ycrcb colour space in opencv python如何在opencv python中将rgb图像转换为ycrcb颜色空间
【发布时间】:2014-06-17 06:29:23
【问题描述】:

使用 open cv python 我正在尝试使用 cv2.cvtclor 将 rgb 图像转换为 ycbcr。

错误是名称“CV_BGR2YCrCb”未定义

任何人都可以提出一些想法。

【问题讨论】:

标签: opencv


【解决方案1】:

OpenCV 将图像读取为 BGR,因此如果您需要 RGB 图像,则必须将图像转换为其 RGB 形式,然后您才能执行您的任务您可以按如下方式使用它们

YCrCb = cv2.cvtColor(img, cv2.COLOR_BGR2YCR_CB) (# if input image is BGR)  
YCrCb = cv2.cvtColor(img, cv2.COLOR_RGB2YCrCb) (# if input image is RGB) 

【讨论】:

    【解决方案2】:

    你需要这样做:

    imgYCC = cv2.cvtColor(img, cv2.COLOR_BGR2YCR_CB)
    

    属性名称是COLOR_BGR2YCR_CB 而不是CV_BGR2YCrCb

    【讨论】:

    • 为了节省一些额外的谷歌搜索熵,您可以 imgRGB = cv2.cvtColor(imgYCC, cv2.COLOR_YCR_CB2BGR) 将图像转换回 RGB 空间
    【解决方案3】:

    OpenCV 的 Python 绑定不使用与 C++ 常量相同的标志值(有关更多详细信息,请参阅this other answer。要传递的正确标志值是cv2.COLOR_BGR2YCR_CB。您可以像这样调用cvtColor

    im = cv2.cvtColor(bgr, cv2.COLOR_BGR2YCR_CB)
    

    【讨论】:

    • 您的意思是“标志名称”而不是“标志值”。实际上,这些值是相同的:36(对于 RGB2YCrCb 为 37):./imgproc.hpp:580: COLOR_BGR2YCrCb = 36, //!import cv2; print(cv2.COLOR_BGR2YCR_CV)