Python OpenCV2 颜色检测掩模到像素坐标

3

我目前正在使用Python对单个图像进行颜色检测。加载图像并确定RGB(或CV2中的BGR)后,我使用以下两行代码生成掩码和输出图像。

mask = cv2.inRange(image, lower, upper)
output = cv2.bitwise_and(image, image, mask = mask)

然后代码显示以下图像。
然而,现在我想要获取处理后的图像并提取绿线的像素坐标点。
谢谢。任何帮助都将不胜感激。

1
所以明确一下,您有发布的图像,并且您想要绿线中像素的坐标吗?(您的代码片段让我有点困惑,它不是问题的一部分,是吗?) - Soltius
你发布的图片是原始图片和结果并排吗? - Soltius
1个回答

2

那么,在二值化图像上使用findNonZeros()怎么样?从黑色背景上的绿线图像开始:

import cv2
import numpy as np

img = cv2.imread(output.png)
img = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) #converting to grayscale
img = img.astype(np.uint8)

#get all non zero values
coord = cv2.findNonZero(img)

编辑:在另一个问题中指出,您还可以使用NumPy的函数nonzeros。它给出相同的结果,但我发现它更慢。

import cv2
import numpy as np
import time 

so=cv2.imread(your_image,0)

start1=time.clock()
coord=cv2.findNonZero(so)
end1=time.clock()

start2=time.clock()
coord2=np.nonzero(so)
end2=time.clock()

print("cv2.findNonZeros() takes "+str(end1-start1)+" seconds.")
print("np.nonzero() takes       "+str(end2-start2)+" seconds.")

>>> cv2.findNonZeros() takes 0.003266 seconds.
>>> np.nonzero() takes       0.021132 seconds.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接