The values of attributes being erased after stopping web-rtc

Hi, i have problem in saving the values of set.performedSets and set.performed Reps that are changing in the model_feedback method. the changed values are available in the same method when printing their values, however when i try to get the values in another method evaluate_exerise, the values displayed are that when initialized

THE CODE:

class PoseEstimatorModel:
def init(self, selectedExercise):
self.performedSets = 0
self.performedReps = 0
self.repsFlag = 0

def model_feedback(self, frame, results, repetitions):
    global flag
    flag = True

    position1 = self.exerciseInfoDict["position 1"]
    position2 = self.exerciseInfoDict["position 2"]

    try:
        row = np.array(
            [[res.x, res.y, res.z, res.visibility] for res in results.pose_landmarks.landmark]).flatten()
        X = pd.DataFrame([row])
        body_language_class = self.model.predict(X)[0]
        body_language_prob = self.model.predict_proba(X)[0]

        position = body_language_class
        if position == position1 and self.performedReps == 0:
            self.performedReps = 0
        if position == position2:
            self.repsFlag = 1
        if position == position1 and self.repsFlag == 1:
            self.performedReps += 1
            self.repsFlag = 2
            if self.performedReps % repetitions == 0:
                self.performedSets += 1


        print(f'PERFORMED REPS BEFORE STOPPING: {self.performedReps}')
        print(f'PERFORMED SETS BEFORE STOPPING: {self.performedSets}')

    except Exception as e:
        pass

def evaluate_exercise(self, sets, repetitions, selectedExerciseTitle, patientUsername):
    global flag

    def recv(frame):
        frame = frame.to_ndarray(format="bgr24")
        frame = cv2.flip(frame, 1)
        frame, results = self.make_detections(frame)
        self.model_feedback(frame, results, repetitions)
        return av.VideoFrame.from_ndarray(frame, format='bgr24')

    ws = webrtc_streamer(key="key",
                         mode=WebRtcMode.SENDRECV,
                         video_frame_callback=recv,
                         media_stream_constraints={"video": True, "audio": False},
                         async_processing=True)

    if ws.state.playing is False and flag is True:
        
        print(f'PERFORMED REPS AFTER STOPPING: {self.performedReps}')
        print(f'PERFORMED SETS AFTER STOPPING: {self.performedSets}')

        flag = False
        self.performedSets = 0
        self.performedReps = 0
        self.repsFlag = 0

THE OUTPUT:

This topic was automatically closed 365 days after the last reply. New replies are no longer allowed.