2017-05-29 55 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

就是这样,我正在改变列的列。 –