23

我有一个图像,想在 python 中使用 CV2 将它分成三个 RGB 通道图像。

我还想要好的文档,我可以在其中找到 openCV 的所有功能,因为我对 OpenCV 完全陌生。

4

2 回答 2

50

cv2.imread这就像使用然后使用加载图像一样简单cv2.split

>>> import cv2
>>> import numpy as np
>>> img = cv2.imread("foo.jpg")
>>> b,g,r = cv2.split(img)

OpenCV 文档可从docs.opencv.org 获得

于 2013-10-04T12:48:24.760 回答
14

文档教程中所述,如果您不想在所有通道上操作但只操作一个/两个,则 cv2.split() 在性能(时间)方面是一项代价高昂的操作,因此首选 numpy 索引:

import cv2
import numpy as np
img = cv2.imread("foo.jpg")
b = img[:,:,0]
g = img[:,:,1]
r = img[:,:,2]

请记住,opencv 将图像读取为 BGR 而不是 RGB

编辑: @Mitch McMabers,感谢您指出这一点。如果您只想单独处理一个/两个通道,请使用此方法以获得最大效率。如果您想在所有三个频道上进行操作,请使用 cv2.split() 访问频道,如@jabaldeno 的回答中所述。

于 2019-03-14T13:22:21.450 回答