Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将jpg图像中的形状转换为坐标。请解释一下。python_Python_Arrays_Python 3.x_Image_Cv2 - Fatal编程技术网

如何将jpg图像中的形状转换为坐标。请解释一下。python

如何将jpg图像中的形状转换为坐标。请解释一下。python,python,arrays,python-3.x,image,cv2,Python,Arrays,Python 3.x,Image,Cv2,我正在尝试输入图像,黑色的L形图像: 输入我的Python代码并接收每个角的坐标。我对cv2的像素方法感到困惑,我试图找出一种方法来创建两个角点阵列,x和y。此形状的示例可能会返回: x = [1, 3, 3, 9, 9, 2, 2, 1] y = [1, 1, 9, 9, 11, 11, 10, 10] 我遵循以下步骤实现了角点检测: import numpy as np import cv2 img = cv2.imread('test.jpg') gray = cv2.cvtColo

我正在尝试输入图像,黑色的L形图像:

输入我的Python代码并接收每个角的坐标。我对cv2的像素方法感到困惑,我试图找出一种方法来创建两个角点阵列,x和y。此形状的示例可能会返回:

x = [1, 3, 3, 9, 9, 2, 2, 1]
y = [1, 1, 9, 9, 11, 11, 10, 10]
我遵循以下步骤实现了角点检测:

import numpy as np
import cv2

img = cv2.imread('test.jpg')
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
gray = np.float32(gray)

corners = cv2.goodFeaturesToTrack(gray, 100, 0.01, 10)
corners = np.int0(corners)

for corner in corners:
    x,y = corner.ravel()
    #x and y are your values of the lsit
    cv2.circle(img,(x,y),3,255,-1)
   
cv2.imshow('Corner',img)
cv2.waitKey()
此结果如下所示: 蓝点是角。

我遵循以下步骤来实现角点检测:

import numpy as np
import cv2

img = cv2.imread('test.jpg')
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
gray = np.float32(gray)

corners = cv2.goodFeaturesToTrack(gray, 100, 0.01, 10)
corners = np.int0(corners)

for corner in corners:
    x,y = corner.ravel()
    #x and y are your values of the lsit
    cv2.circle(img,(x,y),3,255,-1)
   
cv2.imshow('Corner',img)
cv2.waitKey()
此结果如下所示: 蓝点是角。

欢迎来到SO!现在还不清楚,至少对我来说,你想实现什么。你想不想使用cv2方法?@HemersonTacon我对使用cv2方法持开放态度,但我对它有点不熟悉,不确定如何将像素的复杂坐标转换为简单坐标,如我的问题所示。欢迎使用!现在还不清楚,至少对我来说,你想实现什么。你想不想使用cv2方法?@HemersonTacon我对使用cv2方法持开放态度,但我对它有点不熟悉,不确定如何将像素的复杂坐标转换为简单坐标,如我的问题所示。欢迎使用!请花点时间阅读此内容,并尝试改进您的答案。虽然此链接可以回答问题,但最好在此处包含答案的基本部分,并提供链接以供参考。如果链接页面发生更改,仅链接的答案可能无效。-编辑了答案。抱歉回答不好,希望这更好@SirBaum非常感谢您提供的有用链接!我也得到了同样的结果。但我更希望制作两个阵列,一个是x,一个是y,用于角落。我无法将角点像素坐标转换为程序中有用的坐标。例如,我得到了[[[570 781][[326 537][[977 537]][[977 374][[326 374][[733 781][[733 130][[570 130][[568 539][[735 539]][[735 372][[568 372]]].@SirBaum你是对的,ravel()函数似乎不能很好地为我存储坐标,因此,我将尝试通过for循环进行追加,以获得我的数组。非常感谢。欢迎来到SO!请花点时间阅读此内容,并尝试改进您的答案。虽然此链接可以回答问题,但最好在此处包含答案的基本部分,并提供链接以供参考。如果链接页面发生更改,仅链接的答案可能无效。-编辑了答案。抱歉回答不好,希望这更好@SirBaum非常感谢您提供的有用链接!我也得到了同样的结果。但我更希望制作两个阵列,一个是x,一个是y,用于角落。我无法将角点像素坐标转换为程序中有用的坐标。例如,我得到了[[[570 781][[326 537][[977 537]][[977 374][[326 374][[733 781][[733 130][[570 130][[568 539][[735 539]][[735 372][[568 372]]].@SirBaum你是对的,ravel()函数似乎不能很好地为我存储坐标,因此,我将尝试通过for循环进行追加,以获得我的数组。非常感谢。