2

我目前是 python 新手,我想从图像中分别提取 R、G 和 B 帧。

例如,存储我的图像的变量是 img

我想知道的;

我如何制作Rimg = img (:,:,1) Gimg = img (:,:,2) Bimg = img (:,:,3) Ofcource,这些是 MATlab 伪代码,而 Rimg、Gimg 和 Bimg 只是变量。

4

3 回答 3

2

麻木风格:

Bimg = img[:,:,0]
Gimg = img[:,:,1]
Rimg = img[:,:,2]

OpenCV 风格:

B,G,R = cv2.split(img)
于 2013-05-08T19:31:00.123 回答
2

其他答案是正确的,但这是一个足够常见的操作,单行可以是惯用的:

# Let `im` be a numpy array
r,g,b = im.transpose((2,0,1))

操作员改变周围的transpose轴,使第一个轴成为通道轴。然后,您可以使用标准 Python 多重赋值来分配给rgb.

于 2013-05-09T14:16:55.763 回答
0

假设您使用 Python 中的许多图像库(OpenCVMahotasscikits.imagePIL )中的任何一个将数据加载为NumPy ,那么基本上与 Matlab 完全相同的语法将起作用:ndarray

Rimg = img[:,:,0] 
Gimg = img[:,:,1] 
Bimg = img[:,:,2]
于 2013-05-08T19:32:03.210 回答