OpenCV (Python) 中 BGR 和 RGB 的转换
在目标跟踪中经常会使用到 OpenCV 和 Pillow 库等来处理图像。但是,它们处理图像的方式有所不同,比如 OpenCV 把图像看作一个 ndarray
数组对象,而 Pillow 把图像看作一个自定义的 Image
对象;OpenCV 中图像是以 BGR
(blue, green , red) 顺序存储的,而 Pillow 中的图像是以 RGB
(red, green , blue) 存储的。因此,如果想要同时使用两种库的函数,需要进行相应的 BGR
和 RGB
的转换。
OpenCV 中图像的 BGR
和 RGB
的转换可以有两种方法:
- 通过 OpenCV 内置的
cvtColor()
函数; - 直接改变
ndarray
的存储顺序。
图像读取与写入
1 | # 导入包 |
cvtColor() 转化 BGR 和 RGB
在 OpenCV 中, 不同的颜色空间(如 RGB, BGR, HSV
) 可以利用函数 cvtColor()
函数进行转换
1 | dst = cv2.cvtColor(src, code) |
BGR 转换为 RGB
1 | im_rgb_cv = cv2.cvtColor(im_bgr_cv, cv2.COLOR_BGR2RGB) |
RGB 转换为 BGR
1 | im_rgb_pillow = Image.open('data/src/lena.jpg') |
直接在 ndarray 中转换
1 | im_bgr = cv2.imread('data/src/lena.jpg') |
参考链接
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 J. Xu!
评论