如何在OpenCV Python中将RGB图像转换为YCrCb颜色空间

6
使用open cv python,我试图使用cv2.cvtclor将RGB图像转换为YCbCr,然而出现了错误“名称‘CV_BGR2YCrCb’未定义”。请问有什么解决办法吗?

1
请展示出现错误的函数,这样人们才能帮助找出问题所在。 - krillgar
3个回答

15

你需要执行以下操作:

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

属性名称应为 COLOR_BGR2YCR_CB,而非 CV_BGR2YCrCb

为了避免因额外的谷歌搜索而浪费一些熵,您可以使用imgRGB = cv2.cvtColor(imgYCC, cv2.COLOR_YCR_CB2BGR)将图像转换回RGB空间。 - Eduardo Pignatelli

5

OpenCV的Python绑定与C++常量不使用相同的标志值(更多细节请参见此其他答案)。传递的正确标志值是cv2.COLOR_BGR2YCR_CB。您可以像这样调用cvtColor

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

你的意思是“标志名称”,而不是“标志值”。实际上,这些值是相同的:36(对于RGB2YCrCb为37):./imgproc.hpp:580: COLOR_BGR2YCrCb = 36,//!<将RGB/BGR转换为亮度-色度(又称YCC),@ref color_convert_rgb_ycrcb“颜色转换”./imgproc/types_c.h:159: CV_BGR2YCrCb = 36,
  • 现在尝试import cv2; print(cv2.COLOR_BGR2YCR_CV)
- Tomasz Gandor

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) 

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接