【发布时间】:2018-11-30 11:25:51
【问题描述】:
据我所知,OpenCV 以 BGR colorspace 顺序读取图像,我们通常必须将其转换回 RGB,如下所示:
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
但是当我尝试简单地读取图像并显示它时,颜色看起来不错(无需将 BGR 转换为 RGB):
img_bgr = cv2.imread(image_path)
cv2.imshow('BGR Image',img_bgr)
img_rgb = cv2.cvtColor(img_bgr, cv2.COLOR_BGR2RGB)
cv2.imshow('RGB Image',img_rgb )
cv2.waitkey(0)
那么imshow() 是自动更改函数内的排序(从 BGR 到 RGB)还是排序一直是 BGR?
【问题讨论】:
-
在往返 OpenCV 和其他使用 RGB 排序的工具时,您只需将 BGR 转换为 RGB。 OpenCV 有点奇怪。大多数其他工具和格式都按 RGB 顺序排列。从 OpenCV 保存为标准图像格式时,OpenCV 会自动进行转换。但是在来回切换到 matplotlib 或 PIL 或 skimage 时,您可能需要先转换为 RGB 格式,具体取决于您想要在其他软件包中执行的操作以及您是否打算回到 OpenCV。