我正在尝试获取图像中的特定坐标。我在几个位置的图像中标记了一个红点,以指定我想要的坐标。在GIMP中,我使用了我能找到的纯粹红色(HTML表示法 ff000 )。我的想法是,我会遍历图像,直到找到纯红色的阴影,然后打印出坐标。我正在使用python和opencv这样做,但我找不到任何好的教程(我能找到的最好的是this,但它不是很清楚......至少对我而言)。以下是我正在处理的图片示例。 我只是想知道如何用红点找到像素的坐标。
编辑(添加代码):
import cv2
import numpy as np
img = cv2.imread('image.jpg')
width, height = img.shape[:2]
for i in range(0,width):
for j in range(0,height):
px = img[i,j]
我不知道该怎么做。我尝试过if px == [x,y,z]
这样的代码寻找颜色检测,但这种代码无效。
答案 0 :(得分:1)
您可以通过cv2来做到这一点:
image = cv2.imread('image.jpg')
lower_red = np.array([0,0,220]) # BGR-code of your lowest red
upper_red = np.array([10,10,255]) # BGR-code of your highest red
mask = cv2.inRange(image, lower_red, upper_red)
#get all non zero values
coord=cv2.findNonZero(mask)
答案 1 :(得分:0)
你可以用PIL和numpy做到这一点。我确信cv2有类似的实现。
from PIL import Image
import numpy as np
img = Image.open('image.png')
width, height = img.size[:2]
px = np.array(img)
for i in range(height):
for j in range(width):
if(px[i,j,0] == 255 & px[i,j,1] == 0 & px[i,j,2] == 0):
print(i,j,px[i,j])
这不适用于您提供的图像,因为没有任何像素(255,0,0)。当它被压缩为.jpg时,某些东西可能已经改变,或者你没有像你想象的那样让它们变成红色。也许您可以尝试在GIMP中关闭消除锯齿功能。