I am currently working with tkinter, opencv and Media Pipe Framework.I want to recognise all 21 positions of my hands with a JPG image file of myself (Here you can find more information about Mediapipe: https://google.github.io/mediapipe/solutions/holistic).

With the help of Tkinter I can call up my picture and play it back. But how can I make my hands recognisable through the Mediapipe? I am currently trying to work with the holistic method of Mediapipe, as I would then also like to identify my face and body.

Unfortunately, I get the following error message with my implementation:

INFO: Created TensorFlow Lite XNNPACK delegate for CPU.
Exception in Tkinter callback
Traceback (most recent call last):
  File "C:\Python\Python37\lib\tkinter\__init__.py", line 1705, in __call__
    return self.func(*args)
  File "C:/Users/AR/projects/pro1/pictureMp.py", line 51, in visual()
  File "C:/Users/AR/projects/pro1/pictureMp.py", line 37, in visual
    panelA = Label(image=image)
  File "C:\Python\Python37\lib\tkinter\__init__.py", line 2766, in __init__
    Widget.__init__(self, master, 'label', cnf, kw)
  File "C:\Python\Python37\lib\tkinter\__init__.py", line 2299, in __init__
    (widgetName, self._w) + extra + self._options(cnf))
_tkinter.TclError: image "[[[186 195 169]... There are more matrices like this... " doesn't exist

This here is my code. I Hope you can help me.

def detection(image, model):
    image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
    results = model.process(image)
    return image, results

def landmarks(image, results):
    mpDraw.draw_landmarks(image, results.left_hand_landmarks, mpHolistic.HAND_CONNECTIONS)
    mpDraw.draw_landmarks(image, results.right_hand_landmarks, mpHolistic.HAND_CONNECTIONS)

def visual():
    global panelA
    with mpHolistic.Holistic(min_detection_confidence=0.5, min_tracking_confidence=0.5) as holistic:
        image = cv2.imread(pathF.path)
        image, results = detection(image, holistic)
        landmarks(image, results)
        if panelA is None:
            panelA = Label(image=image)
            panelA.image = image
            panelA.pack(side="left", padx=10, pady=10)
            panelA.image = image

def image():
    global cap
    pathF.path = filedialog.askopenfilename()
    filename = os.path.basename(pathF.path)
    if len(select_image.path) > 0:
        cap = cv2.imread(pathF.path)

The code looks incomplete but I'll roll with it. To find out where the issue is I'd find out which area it is.

I see blocks of code at lines 1, 6, 10 and 24. Working from the bottom up I'd remove from 24 down, test, then 10, test and so on so I can find which block is trouble.

Remember that I don't have your setup so all I can write is how to whittle down to where the issue is so I can focus.

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.