【问题标题】:how to get x,y(coordinate) array of pixels in image如何获取图像中像素的x,y(坐标)数组
【发布时间】:2018-03-08 08:27:36
【问题描述】:

我需要 opencv - python 图像中某些彩色像素的所有坐标

我猜cv2.inRange的返回值可能包含像素坐标,但无法理解它是如何构造的

有没有办法得到这个?

【问题讨论】:

  • cv2.inRange 只返回一个二进制掩码,在一个 numpy 矩阵中只有两个值 2550,现在您可以使用一些 numpy 方法来获取像素 == 255 的坐标跨度>

标签: python opencv image-processing


【解决方案1】:
import cv2
import numpy as np


img = cv2.imread("sample.jpg")
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)

# Create an array with HSV between 110,50,50 and 130,255,255
array = cv2.inRange(hsv, np.array([110,50,50]), np.array([130,255,255]))

np.nonzero(array)
# (array([ 1,  1,  1,  2, 12, 13, 15, 15, 15, 18, 19]),
#  array([13, 14, 18, 22, 21,  1, 20, 22, 23,  1, 30]))

这意味着像素 (1, 13), (1, 14), (1, 18), (2, 22) 等在我们给定的值之间。如果您希望它们已经配对:

np.transpose(np.nonzero(array))
# array([[ 1, 13],
#        [ 1, 14],
#        ...
#        [18,  1],
#        [19, 30]])

【讨论】:

    猜你喜欢
    • 2021-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-17
    • 2020-07-05
    • 1970-01-01
    相关资源
    最近更新 更多