2013-05-08 83 views
2

我目前對python是新手,我想從圖像中分別提取R,G和B幀。從圖像中提取單個幀

例如,存儲我的形象的變量是IMG

我想知道的;

我怎麼做Rimg = img (:,:,1) Gimg = img (:,:,2) Bimg = img (:,:,3) Ofcource,這些都是MATLAB僞代碼和RIMG,Gimg和BIMG只是變量。

+3

它們被稱爲顏色通道。你可能會發現更容易搜索。 – Blender 2013-05-08 19:28:35

回答

2

numpy的風格:

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

OpenCV的風格:

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

謝謝,我結束了它在numpy stype :)順便說一句,優秀的博客,幫助我瞭解python! – 2013-05-11 00:06:24

0

假設你加載數據,使用在Python(OpenCVMahotasscikits.imagePIL許多圖像庫中的任何一個NumPyndarray ),那麼基本上與Matlab完全相同的語法將起作用:

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

其他的答案是正確的,但是這是一種常見的足夠的操作,一襯墊可以是慣用:

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

transpose操作者周圍的變化的軸,使得第一軸線成爲頻道軸。然後你可以使用標準的Python多任務分配到rgb

+0

啊這種方式是一個很好的和有效的方式去做,謝謝! – 2013-05-11 00:04:33