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