當前位置:首頁 > 教育 > 正文

Python,cvzone -為什麼我會得到這個ValueError?

提問開始:

我試圖用兩隻手(手勢控制圖像縮放)放大一張圖片,但當我試圖用兩隻手時,我得到了這個錯誤,但我不知道為什麼。在編寫我的程序時,我遵循以下教程:https://www.youtube.com/watch?v=VPaFV3QBsEw&t=675s。這很奇怪,因為這個程序對他有效。

這是我得到的錯誤:

  hands, img = detector.findHands(img)

ValueError: too many values to unpack (expected 2)

這是我的代碼:

import cv2
from cvzone.HandTrackingModule import HandDetector
 
cap = cv2.VideoCapture(0)
cap.set(3, 1280)
cap.set(4, 720)
 
detector = HandDetector(detectionCon=0.7)
startDist = None
scale = 0
cx, cy = 500,500

while True:
    success, img = cap.read()
    hands, img = detector.findHands(img)
    img1 = cv2.imread("kung_fu_panda.png")
 
    if len(hands) == 2:
        
        if detector.fingersUp(hands[0]) == [1, 1, 0, 0, 0] and \
                detector.fingersUp(hands[1]) == [1, 1, 0, 0, 0]:
         
            lmList1 = hands[0]["lmList"]
            lmList2 = hands[1]["lmList"]
            # point 8 is the tip of the index finger
            if startDist is None:
                length, info, img = detector.findDistance(hands[0]["center"], hands[1]["center"], img)
                startDist = length
 
            length, info, img = detector.findDistance(hands[0]["center"], hands[1]["center"], img)
 
            scale = int((length - startDist) // 2)
            cx, cy = info[4:]
            print(scale)
    else:
        startDist = None
 
    try:
        h1, w1, _= img1.shape
        newH, newW = ((h1+scale)//2)*2, ((w1+scale)//2)*2
        img1 = cv2.resize(img1, (newW,newH))
 
        img[cy-newH//2:cy+ newH//2, cx-newW//2:cx+ newW//2] = img1
    except:
        pass
 
    cv2.imshow("Image", img)
    cv2.waitKey(1)
回答開始:得票數 1

cvzone庫每次都會更新它們的庫。正如您在視頻開頭所看到的,當他導入cvzone包時,他使用的是cvzone版本1.5.0。

我在其他版本中嘗試了你的代碼,得到了一個與你的類似的錯誤,但在1.5.0版本中,你的代碼工作得很好。

您可以使用my answer here将項目中的cvzone庫版本更改為1.5.0。

總結

以上是真正的電腦專家為你收集整理的Python,cvzone -為什麼我會得到這個ValueError?的全部内容,希望文章能夠幫你解決所遇到的問題。

如果覺得真正的電腦專家網站内容還不錯,歡迎将真正的電腦專家推薦給好友。

你可能想看:

有話要說...

取消
掃碼支持 支付碼