如何知道在python中使用OpenCV检测到的白色区域的位置?
例如,在这段代码中,我过滤了视频提要以显示白色区域。我如何知道它们的位置/坐标?(x,y)如何知道在python中使用OpenCV检测到的白色区域的位置?,python,opencv,image-processing,Python,Opencv,Image Processing,例如,在这段代码中,我过滤了视频提要以显示白色区域。我如何知道它们的位置/坐标?(x,y) 您可以使用numpy方法获取矩阵中不为零的所有值 indcies = numpy.nonzero(res) 根据Amitay的回答,您还可以使用OpenCV的函数findNonZero。我不知道它的实现方式与numpy的nonzero有什么不同,但是if给出了相同的结果,而且速度更快(这对于大型循环或图像很有用) 看看如果我发现了一个大斑点会怎么样?我怎样才能找到它的中心呢?取x坐标系的平均值和y坐标系
您可以使用numpy方法获取矩阵中不为零的所有值
indcies = numpy.nonzero(res)
根据Amitay的回答,您还可以使用OpenCV的函数
findNonZero
。我不知道它的实现方式与numpy的nonzero
有什么不同,但是if给出了相同的结果,而且速度更快(这对于大型循环或图像很有用)
看看如果我发现了一个大斑点会怎么样?我怎样才能找到它的中心呢?取x坐标系的平均值和y坐标系的平均值
indcies = numpy.nonzero(res)
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.