2012-08-29 924 views
2

我正在將圖像加載到python例如獲取RGB值opencv python

image = cv2.imread("new_image.jpg") 

我怎樣才能acccess的image的RGB值?

+1

'imread'應該返回只是一個普通的矩陣:http://opencv.willowgarage.com/documentation/cpp/core_basic_structures.html#Mat – Blender

+0

它,但如果我想訪問圖像RGB值怎麼會這樣做? –

+0

它是從0x000000到0xFFFFFF的範圍?您可能需要將其轉換爲十六進制以具有可識別的顏色...然後從中獲取每個r,g,b值(可能是0.0-1.0的範圍,在這種情況下,乘以0xFFFFFF(最大RGB十六進制) –

回答

2

你可以做

image[x][y][z] 

,它會在x,y,z座標返回像素的值。請注意,索引編制從0開始。所以,如果你要訪問的第三個RGB分量,你必須做image[x][y][2]其中xy是的行和列所需。

此外,您還可以通過鍵入dir(<variable>)獲取給定對象在Python可用的方法。例如,裝載image後,運行dir(image),你會得到一些有用的命令:

 
'cumprod', 'cumsum', 'data', 'diagonal', 'dot', 'dtype', 'dump', 'dumps', 'fill', 
'flags', 'flat', 'flatten', 'getfield', 'imag', 'item', 'itemset', 'itemsize', 
'max', 'mean', 'min', ... 

用法:image.mean()

+1

'圖像[X,Y,Z]'同樣適用,因爲這僅僅是一個numpy的陣列。 – Dougal

+0

謝謝你。我想問問,我把從RGB圖像爲YCbCr,我循環儘管每個像素變化它因此,這個過程是相當密集,需要幾秒鐘甚至小200x200的圖像。是否有其他的形式給出了這個以提高性能?也許你知道。 –

+0

我覺得NumPy的可以通過'點進行矩陣乘法(A,b)' 。 – Yamaneko

2

使用OpenCV的獲取在Python像素的BGR顏色值

import cv2 
image = cv2.imread("sample.jpg") 
color = int(image[300, 300]) 
# if image type is b g r, then b g r value will be displayed. 
# if image is gray then color intensity will be displayed. 
print color 

輸出: [73 89 102]

+0

謝謝,這實際上在2017年對opencv3有效! –