Получение координат x и y из cv2.contour в Open CV Python и сохранение их в различных переменных - PullRequest
0 голосов
/ 10 июня 2018

Я печатаю контур из 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()

Ответы [ 3 ]

0 голосов
/ 10 июня 2018

Я разработал следующее для хранения всех x и y координат для одного контура:

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

Я уверен, что должен быть более быстрый путь !!

0 голосов
/ 05 февраля 2019
kx = contours[k][:,0,0]
ky = contours[k][:,0,1]
0 голосов
/ 10 июня 2018

Знаете ли вы деструктурирование?

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

print(x)
# 370

print(y)
#269

Или, если данные представляют собой список списка:

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

print(x)
# 370

print(y)
#269
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...