Python 如何找出图像中像素值发生变化的最高坐标点?

Python 如何找出图像中像素值发生变化的最高坐标点?,python,opencv,matplotlib,image-processing,Python,Opencv,Matplotlib,Image Processing,我有一个形象。使用以下代码在OpenCV中使用Canny边缘检测后,我得到了一个检测到边缘的二值图像 import cv2 img = cv2.imread('Test3.jpg') canny = cv2.Canny(img, 0, 150) cv2.imshow('Canny Edge', canny) cv2.waitKey(0) cv2.destroyAllWindows() 现在我想找出像素值改变点的坐标值,从上到下扫描图像。如何操作???要查找非零像素,可以使用numpy函数

我有一个形象。使用以下代码在OpenCV中使用Canny边缘检测后,我得到了一个检测到边缘的二值图像

import cv2

img = cv2.imread('Test3.jpg')
canny = cv2.Canny(img, 0, 150)
cv2.imshow('Canny Edge', canny)
cv2.waitKey(0)
cv2.destroyAllWindows()


现在我想找出像素值改变点的坐标值,从上到下扫描图像。如何操作???

要查找非零像素,可以使用
numpy
函数
nonzero

import numpy as np
x = np.array([[1, 0, 0], [0, 1, 0], [1, 1, 0]])
coords = np.nonzero(x)
print(coords)
在您的情况下,只需调用
np.nonzero(canny)

将输出

array([0, 1, 2, 2]), array([0, 1, 0, 1]))
然后,您可以查询任何尺寸中的最小/最大坐标值,例如:

np.max(coords[0])

要查找非零像素,可以使用
numpy
函数
nonzero

import numpy as np
x = np.array([[1, 0, 0], [0, 1, 0], [1, 1, 0]])
coords = np.nonzero(x)
print(coords)
在您的情况下,只需调用
np.nonzero(canny)

将输出

array([0, 1, 2, 2]), array([0, 1, 0, 1]))
然后,您可以查询任何尺寸中的最小/最大坐标值,例如:

np.max(coords[0])

如何处理同一行上的像素?应该选择哪一个?你说的“改变”是什么意思?二值图像只显示边缘,由canny输出生成。我不明白你所说的“值改变”是什么意思。您正在使用特定算法从现有图像创建新图像。你寻找最顶端轮廓像素的坐标吗?圆形角点还是矩形角点?从顶部迭代每一行,当发现第一行有任何单个白色像素时,将其打断,然后找到该像素在该行中的位置,以获得所需点的坐标。你应该如何处理同一行上的像素?应该选择哪一个?你说的“改变”是什么意思?二值图像只显示边缘,由canny输出生成。我不明白你所说的“值改变”是什么意思。您正在使用特定算法从现有图像创建新图像。你寻找最顶端轮廓像素的坐标吗?圆形角点,还是矩形角点?从顶部迭代每一行,当发现第一行有任何单个白色像素时中断,然后找到该像素在该行中的位置,以获得所需点的坐标。我想找到最顶端/全局最大值(坐标)点。并不像我期望的那样准确。然而,这也帮助解决了我的问题。谢谢。我想找出最顶端/全局最大值(坐标)点。并不像我期望的那样准确。然而,这也帮助解决了我的问题。谢谢