在opencvpython中从cv2.contour获取x和y坐标,并将其存储到不同的变量中

2024-04-26 11:38:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在从cv2.findContours打印轮廓。它会打印出这样的东西: [[370 269]] 我想要的是得到370并将其存储到一个变量中。在

import cv2
import numpy as np
cap = cv2.VideoCapture(0)

while True:
    _, frame = cap.read()


    hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)

    lower = np.array([0,0,255]) 
    upper = np.array([255,255,255])

    imgThreshHigh = cv2.inRange(hsv, lower, upper)
    thresh = imgThreshHigh.copy()

    _,contours,_ = cv2.findContours(thresh, 
                cv2.RETR_LIST,cv2.CHAIN_APPROX_SIMPLE)

    print(contours)

    cv2.imshow('frame',frame)
    cv2.imshow('Object',thresh)
    k = cv2.waitKey(5) & 0xFF
    if k == 27:
        break
cv2.destroyAllWindows()

Tags: importnparraycv2upperhsvlowerframe
3条回答

为了存储单个轮廓的所有xy坐标,我计算出了以下方法:

x = []
y = []
for k in contours:
    for i in k:
        for j in i:
            x.append(j[0])
            y.append(j[1])

我相信一定有更快的方法!!在

kx = contours[k][:,0,0]
ky = contours[k][:,0,1]

你知道解构吗?在

data = [370, 269]
x, y = data

print(x)
# 370

print(y)
#269

或者,如果数据是列表列表:

^{pr2}$

相关问题 更多 >