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

标签 python opencv matplotlib image-processing

我有一张图片。使用以下代码在OpenCV中使用Canny Edge检测后,我得到了一个已检测边缘的二进制图像。

import cv2

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

Original Image
Binary Image

现在,我想找出像素值改变的点的坐标值,从上到下扫描图像。怎么做??

最佳答案

要查找非零像素,可以使用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])

关于python - 如何找出图像中像素值发生变化的最高坐标点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53814087/

相关文章:

python - 如何在pygame中点击并拖动一个对象?

python - scipy.io.wavfile 给出 "WavFileWarning: chunk not understood"错误

python - 如何修改 2d 散点图以显示基于 csv 文件中第三个数组的颜色?

python - 在 matplotlib 中绘制 (x, y) 坐标列表

matplotlib - 增加 matplotlib 注释双面箭头的厚度

python - 用Python在文件中间插入行?

python - python 的 numpy.ndarray 和 list 数据类型之间的区别

opencv - 如何从双目视觉中获取点云

python - OpenCV 管道编辑器

python - 如何在 OpenCV 中的图像上画一条线?