2017-05-29 91 views
0

我在MacOS上使用OpenCV 3,我試圖獲取圖像中像素的RGB值。無法獲得正確的像素彩色圖像python

例如,我使用以下圖像:

enter image description here

我做,其檢測所述圖像中的用戶的點擊和使用x,y座標輸出RGB顏色的程序的點擊,但顯然當我點擊圈子的某些區域時,我得到的值不正確。例如:當我點擊藍色圓圈內部時,讓我們說圖像的點(177,340),它會輸出值(255,255,255),這肯定是不正確的。

但是,當我點擊右邊或左邊的位時,它會輸出正確的值:(17,51,225)。發生這種情況的整體形象,

我懷疑這是一件關係到規模,然後我就開了蟒蛇的圖像,並使用下面的代碼獲得了像素值:

import cv2 
import numpy as np 

img = cv2.imread('circles.jpg', 1) 
print(img[177,340]) 

但仍然,我得到的是這樣的:

array([255, 255, 255], dtype=uint8) 

我懷疑這是與座標系有關的東西,我不知道。有人能幫我一下嗎?

在此先感謝。

+1

請注意X在OpenCV上從左開始,Y從上開始。 – Divakar

+3

您正在訪問RGB值爲img [row,col],行從上到下,col從左到右。然而,當你註冊一個鼠標點擊圖像時,它是一個(x,y)點,x從左到右,y從上到下。交換行和列,或者x和y,應該修正事情。 – Headcrab

+3

如果您在應用程序中實際使用的是固體圖形(與真實照片相反),請確定考慮使用PNG或GIF格式,而不是JPEG格式,因爲這會導致各種各樣的問題。 –

回答

2

我在下面的代碼中將[177,340]以洋紅色(255,0,255)作爲您的圖片。

image[175:179,338:342] = (255,0,255) # enlarge a bit for easy viewing

它清楚地表明,該點位於白色背景上的形象。

enter image description here

可能的是,你的編碼不​​正確(row,col)作爲(col,row),讓你得到色彩[17,51,225]這是在你的形象,而不是[244,70,18]「橙色和最大的圓」,這是「藍色圓圈」。

+0

就是這樣,我正在改變列的列。 –