2017-01-03 56 views
2

我正在繪製一條特定顏色(RGB)的線,之後我在Python中使用opencv2加載圖像並將BGR轉換爲RGB。Opencv2和python - cv2檢測不同的RGB值

不幸的是,我從opencv2獲得的數組具有稍微不同的RGB值。

如果我使用Illustrator或Paint,則無關緊要。 JPG,PNG,BMP或TIF。顏色總是不同於+ - 1〜40

這裏是我的代碼:

import numpy as np 
import cv2 

src = cv2.imread("test.jpg") 
image = cv2.cvtColor(src, cv2.COLOR_BGR2RGB) 
print(image[10, 10]) 

我輸入已與RGB平方值[100 50 0]和我越來越[95 46 0],但我需要確切RGB值。

+0

如果您需要確切值,請嘗試使用像PNG或TIFF這樣的無損格式。 –

+0

正如我已經寫過的,我使用了JPG,TIFF,PNG和BMP。沒有區別。 – SamSteg

+0

你能分享你創建的文件 - 最好是以PNG的形式嗎?也許它有一個OpenCV忽略的coour配置文件。 –

回答

0

這取決於您如何保存您輸入的內容,無論您使用哪個程序。我嘗試用圖像編輯程序打開示例圖像,其值與OpenCV中代碼的相同。

嘗試保存輸入,如下所示,並用您的代碼重新閱讀。如果它仍然不同,那麼我們可以認爲這個問題與imreadcvtColor有關。 A,B和C的值必須相同。還要確保您以無損格式保存。

import cv2 
import numpy as np 

# Create a constant image 
img = np.ones((15,15,3)) 
img[:,:,0]=100 
img[:,:,1]=50 
img[:,:,2]=0 
# Check the desired value = A 
print(img[10,10]) 
# Save the image 
cv2.imwrite("input.png",img) 

# Read back the image 
src=cv2.imread("input.png", cv2.IMREAD_COLOR) 
# Check the desired value = B 
print(src[10,10]) 

# Convert the image 
image = cv2.cvtColor(src, cv2.COLOR_BGR2RGB) 
# Check the desired value = C 
print(image[10, 10])