[英]Finding all the X and Y coordinates of an image in python opencv
I am a beginner in opencv-python.我是 opencv-python 的初学者。 I want to get all the X and Y coordinates of for the region of the interest mentioned in the code and store it in an array.
我想获取代码中提到的感兴趣区域的所有 X 和 Y 坐标,并将其存储在一个数组中。 Can anyone give me an idea on how to proceed?
谁能给我一个如何继续的想法? I was able to run the code, but is not showing any results.
我能够运行代码,但没有显示任何结果。
Image for detecting all the X and Y coordinates用于检测所有 X 和 Y 坐标的图像
The sample code i wrote is written below,我写的示例代码写在下面,
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
In your code you are using a for
loop which is time consuming.在您的代码中,您使用的是耗时的
for
循环。 You could rather make use of the fast and agile numpy
library.您宁愿使用快速灵活的
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])
indices
returns: indices
回报:
(array([ 1, 1, 2, ..., 637, 638, 638], dtype=int64),
array([292, 298, 292, ..., 52, 49, 52], dtype=int64))
zip()
method to get a list of tuples containing those points.zip()
方法来获取包含这些点的元组列表。 Printing coordinates
gives me a list of coordinates with edges:打印
coordinates
给了我一个带边缘的坐标列表:
[(1, 292), (1, 298), (2, 292), .....(8, 289), (8, 295), (9, 289), (9, 295), (10, 288)]
this post lets you know how to get the pixel of an image http://opencv-python-tutroals.readthedocs.io/en/latest/py_tutorials/py_core/py_basic_ops/py_basic_ops.html这篇文章让你知道如何获取图像的像素http://opencv-python-tutroals.readthedocs.io/en/latest/py_tutorials/py_core/py_basic_ops/py_basic_ops.html
if you just iterate over the image in a nested for-loop you can perform whatever operation you want on said pixel eg, add x and y to an array if the colour isnt white如果您只是在嵌套的 for 循环中迭代图像,您可以对所述像素执行任何您想要的操作,例如,如果颜色不是白色,则将 x 和 y 添加到数组中
EDIT: i had to read up on what Chris commenting on the post meant by XY Problem but i agree, is there something youve tried and hasnt worked that youd like us to help fix?编辑:我必须阅读 Chris 对 XY 问题所指的帖子发表的评论,但我同意,是否有您尝试过但没有奏效的事情希望我们帮助修复?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.