cv2如何处理RGB和BGR
RGB vs BGR
使用 np.array 创建一张 255×255 的 RGB 值为 [255, 0, 0] 的红色图像,类型为 np.ndarray。使用 cv2.imwrite 方法保存这张图片为 red.png,在本地 red.png 显示为蓝色,它的 RGB 值为 [0, 0, 255]。再使用 cv2.imread 方法读取这张图片,得到的新图像的 RGB 值为 [255, 0, 0]。
1 | import cv2 |
这表示使用 cv2.imwrite 方法保存图片时,cv2 将传入的 img 理解成 BGR 图像并保存成 RGB 图像。而使用 cv2.imread 方法读取图片时,cv2 将传入的图像理解成 RGB 图像,并转换成 BGR 图像。
1 | RGBA -cv2.imread()-> BGRA |
其实 cv2 本身不能根据图片的通道信息知道图片的通道顺序是 RGB 还是 BGR,它默认本地中图片的顺序是 RGB 的,读取到内存中的图片的通道顺序是 BGR 的,所以 cv2.imread/cv2.imwrite 都会将传入的图像的第0个通道和第2个通道进行交换。同时我们也可以通过 cv2 提供的方法进行手动转换
1 | image = cv2.imread(path2image, cv2.IMREAD_UNCHANGED) # RGB -> BGR |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 文羊羽!