Питон - как поменять две локальные переменные в разных для-петли?
Я использую и , чтобы обнаружить мою руку и отправка координат (в пикселях) это к Arduino.
Все идет нормально, когда я использую 1 жест рукой. Но, когда я пытаюсь использовать 2 такой:
1. Открыл вручную -> изменение и (удерживать Y
) путем перемещения влево-вправо и вверх-вниз
2. Закрытые руки -> изменить (сохранить и ), перемещая вверх-вниз
Он побежал в некоторые проблемы, как "глобальная переменная" и "локальная переменная".
import cv2 # OpenCV
import numpy as np
from serial import Serial # serial communication
import struct # pack int to byte => for sending in serial
arduinoData = Serial('com6', 115200)
cap = cv2.VideoCapture(0) # 0 = laptom camera
Closed_cascade = cv2.CascadeClassifier('Closed.xml')
Opened_cascade = cv2.CascadeClassifier('Opened.xml')
while(True):
ret, frame = cap.read()
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
Closed_detect = Closed_cascade.detectMultiScale(gray, 1.2, 5)
Opened_detect = Opened_cascade.detectMultiScale(gray, 1.2, 5)
for (x1, y1, w1, h1) in Opened_detect:
cv2.rectangle(frame, (x1, y1), (x1 + w1, y1 + h1), (0, 150, 0), 2)
servoPosition = 35
zcenter1 = int(x1 + w1/2)
ycenter1 = ycenter2
xcenter1 = int(y1 + h1/2 + 30)
arduinoData.write(struct.pack('>IIII',xcenter1,ycenter1,zcenter1,servoPosition))
for (x2, y2, w2, h2) in Closed_detect:
cv2.rectangle(frame, (x2, y2), (x2 + w2, y2 + h2), (0, 0, 200), 2)
servoPosition = 5
zcenter2 = zcenter1
ycenter2 = int(y2 + h2/2 + 30)
xcenter2 = xcenter1
arduinoData.write(struct.pack('>IIII',xcenter2,ycenter2,zcenter2,servoPosition))
cv2.imshow('Webcam', frame)
k = cv2.waitKey(40) & 0xff
if k == 27:
break
cap.release()
cv2.destroyAllWindows()
Когда я пытаюсь запустить код, некоторые ложные случиться:
name 'ycenter2' is not defined
name 'zcenter1' is not defined
name 'xcenter1' is not defined
Как обменять свои переменные, когда они находятся в 2 разных цикла функции , как показано ниже?
ycenter1 = ycenter2
zcenter2 = zcenter1
xcenter2 = xcenter1
Я новичок в Python, поэтому я ценю всю вашу помощь! Спасибо большое!

Посмотрите другие вопросы по меткам python global-variables local-variables