从图像中提取单个帧

时间:2013-05-08 19:25:03

标签: python opencv python-2.7 numpy

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

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

我想知道的事情;

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

3 个答案:

答案 0 :(得分:2)

Numpy风格:

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

OpenCV风格:

B,G,R = cv2.split(img)

答案 1 :(得分:2)

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

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

transpose运算符更改轴,使第一个轴成为通道轴。然后,您可以使用标准Python多重赋值来分配给rgb

答案 2 :(得分:0)

假设您使用Python中的任意一个图像库(NumPyndarrayOpenCV,{{{{}} Mahotas加载数据scikits.image PIL 3}}),然后基本上与Matlab完全相同的语法将起作用:

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