gpt4 book ai didi

python - 在 python opencv 中查找图像的所有 X 和 Y 坐标

转载 作者:行者123 更新时间:2023-12-05 02:18:51 28 4
gpt4 key购买 nike

我是 opencv-python 的初学者。我想获取代码中提到的感兴趣区域的所有 X 和 Y 坐标,并将其存储在一个数组中。谁能告诉我如何进行?我能够运行代码,但没有显示任何结果。

用于检测所有X和Y坐标的图像

下面是我写的示例代码,

import cv2
import numpy as np
import matplotlib.pyplot as plt
import imutils
img = cv2.imread("/home/harikrishnan/Desktop/image.jpg",0)
img1 = imutils.resize(img)
img2 = img1[197:373,181:300] #roi of the image
ans = []
for y in range(0, img2.shape[0]): #looping through each rows
for x in range(0, img2.shape[1]): #looping through each column
if img2[y, x] != 0:
ans = ans + [[x, y]]
ans = np.array(ans)
print ans

最佳答案

在您的代码中,您使用的是耗时的 for 循环。您更愿意使用快速敏捷的 numpy 库。

import cv2
import numpy as np
import matplotlib.pyplot as plt
import imutils
img = cv2.imread("/home/harikrishnan/Desktop/image.jpg",0)
img1 = imutils.resize(img)
img2 = img1[197:373,181:300] #roi of the image

indices = np.where(img2!= [0])
coordinates = zip(indices[0], indices[1])
  • 我使用 numpy.where() 方法检索两个数组的元组索引,其中第一个数组包含白点的 x 坐标,第二个数组包含白色像素的 y 坐标。

indices 返回:

(array([  1,   1,   2, ..., 637, 638, 638], dtype=int64),
array([292, 298, 292, ..., 52, 49, 52], dtype=int64))
  • 然后我使用 zip() 方法获取包含这些点的元组列表。

打印 coordinates 给我一个带边的坐标列表:

[(1, 292), (1, 298), (2, 292), .....(8, 289), (8, 295), (9, 289), (9, 295), (10, 288)] 

关于python - 在 python opencv 中查找图像的所有 X 和 Y 坐标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44068654/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com