【发布时间】:2017-05-30 03:28:37
【问题描述】:
我在 MacOS 上使用 OpenCV 3,我正在尝试获取图像中像素的 RGB 值。
例如,我使用的是以下图片:
我制作了一个程序,可以检测用户在图像中的点击,并使用点击的 x、y 坐标输出 RGB 颜色,但显然当我点击圆圈的某些区域时,我得到了一个不正确的值。例如:当我在蓝色圆圈内点击时,假设在图像的点(177,340)上,它输出的值是(255,255,255),这肯定是不正确的。
但是当我向右或向左单击一点时,它会输出正确的值:(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)
我怀疑这与我不知道的坐标系有关。有人可以帮我解决一下吗?
提前致谢。
【问题讨论】:
-
请注意,在 OpenCV 上 X 从左侧开始,Y 从顶部开始。
-
您正在以 img[row, col] 的形式访问 RGB 值,row 从上到下,col 从左到右。但是,当您在图像上单击鼠标时,它是一个 (x, y) 点,x 从左到右,y 从上到下。交换 row 和 col 或 x 和 y,应该可以解决问题。
-
如果您在应用程序中实际使用实体图形(而不是真实照片),请务必考虑使用 PNG 或 GIF 格式而不是 JPEG,因为 JPEG 会因有损而引入各种问题。跨度>