Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 无法获取正确的像素颜色图像_Python_Image_Opencv_Numpy - Fatal编程技术网

Python 无法获取正确的像素颜色图像

Python 无法获取正确的像素颜色图像,python,image,opencv,numpy,Python,Image,Opencv,Numpy,我在MacOS上使用OpenCV 3,我只是想得到图像中像素的RGB值 例如,我使用的是下图: 我制作了一个程序,检测用户在图像中的点击,并使用点击的x,y坐标输出RGB颜色,但显然,当我在圆圈的某些区域点击时,我得到了一个不正确的值。例如:当我在蓝色圆圈内单击时,比如说在图像的点(177340)上,它输出值(255255),这肯定是错误的 但当我向右或向左点击一点时,它会输出正确的值:(17,51,225)。这在整个图像中都会发生 我怀疑这与比例有关,然后我在python上打开图像,使用以下

我在MacOS上使用OpenCV 3,我只是想得到图像中像素的RGB值

例如,我使用的是下图:

我制作了一个程序,检测用户在图像中的点击,并使用点击的x,y坐标输出RGB颜色,但显然,当我在圆圈的某些区域点击时,我得到了一个不正确的值。例如:当我在蓝色圆圈内单击时,比如说在图像的点(177340)上,它输出值(255255),这肯定是错误的

但当我向右或向左点击一点时,它会输出正确的值:(17,51,225)。这在整个图像中都会发生

我怀疑这与比例有关,然后我在python上打开图像,使用以下代码获得像素值:

import cv2
import numpy as np

img = cv2.imread('circles.jpg', 1)
print(img[177,340])
但我得到的仍然是:

array([255, 255, 255], dtype=uint8)
我怀疑这和坐标系有关,我不知道。有人能帮我一下吗


提前感谢。

我将点
[177340]
绘制为洋红
(255,0255)
到您的图像,如下代码所示

image[175:179338:342]=(255,0255)#放大一点以便查看

图像中清楚地显示该点位于白色背景中


很可能,您将
(行,列)
错误地编码为
(列,行)
,因此您得到的颜色
[17,51225]
是图像中的“橙色和最大的圆”,而不是
[244,70,18]
是“蓝色圆”。我用洋红绘制了点
[177340]
(255,0255)按下面的代码显示图像

image[175:179338:342]=(255,0255)#放大一点以便查看

图像中清楚地显示该点位于白色背景中


很可能,您将
(行,列)
错误地编码为
(列,列)
,因此您得到的颜色
[17,51225]
是图像中的“橙色和最大的圆”,而不是
[244,70,18]
是“蓝色圆”。

请注意,在OpenCV上X从左开始,Y从上开始。您将RGB值作为img访问[行,列],行从上到下,列从左到右。但是,当你在图像上注册鼠标点击时,它是一个(x,y)点,x从左到右,y从上到下。交换行和列或x和y,应该可以解决问题。如果你实际使用的是实心图形形状(与真实照片相反)在你的应用程序中,一定要考虑使用PNG或GIF格式,而不是JPEG,因为它是有损的,所以请注意,X是从OpenCV上的左和Y开始的。你正在访问RGB值,如IMG[行,Cal],行上下,CL向左向右。但是,当你登记鼠标点击图像时,它是一个(x,y)点,x从左到右,y从上到下。交换行和列或x和y,应该可以解决问题。如果您实际使用的是实体图形形状(与真实照片相反)在您的应用程序中,一定要考虑使用PNG或GIF格式,而不是JPEG,它通过有损性引入各种各样的问题。也就是说,我正在通过列更改行。