微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

我该如何修复这个 Python Cv2Error

如何解决我该如何修复这个 Python Cv2Error

当我运行以下代码时:

import cv2
import mediapipe as mp
import time
import math
import numpy as np

class handDetector():
    def __init__(self,mode=False,maxHands=2,detectionCon=0.5,trackCon=0.5):
        self.mode = mode
        self.maxHands = maxHands
        self.detectionCon = detectionCon
        self.trackCon = trackCon

        self.mpHands = mp.solutions.hands
        self.hands = self.mpHands.Hands(self.mode,self.maxHands,self.detectionCon,self.trackCon)
        self.mpDraw = mp.solutions.drawing_utils
        self.tipIds = [4,8,12,16,20]

    def findHands(self,img,draw=True):
        imgRGB = cv2.cvtColor(img,cv2.COLOR_BGR2HSV)
        self.results = self.hands.process(imgRGB)
        # print(results.multi_hand_landmarks)

        if self.results.multi_hand_landmarks:
            for handLms in self.results.multi_hand_landmarks:
                if draw:
                    self.mpDraw.draw_landmarks(img,handLms,self.mpHands.HAND_CONNECTIONS)

        return img

    def findPosition(self,handNo=0,draw=True):
        xList = []
        yList = []
        bBox = []
        self.lmList = []
        if self.results.multi_hand_landmarks:
            myHand = self.results.multi_hand_landmarks[handNo]
            for id,lm in enumerate(myHand.landmark):
                # print(id,lm)
                h,w,c = img.shape
                cx,cy = int(lm.x * w),int(lm.y * h)
                xList.append(cx)
                yList.append(cy)
                # print(id,cx,cy)
                self.lmList.append([id,cy])
                if draw:
                    cv2.circle(img,(cx,cy),5,(255,255),cv2.FILLED)

        xmin,xmax = min(xList),max(xList)
        ymin,ymax = min(yList),max(yList)
        bBox = xmin,ymin,xmax,ymax

        if draw:
            cv2.rectangle(img,(xmin - 20,ymin - 20),(xmax + 20,ymax + 20),(0,255,0),2)

        return self.lmList,bBox

    def fingersUp(self):
        fingers = []
        # Thumb
        if self.lmList[self.tipIds[0]][1] > self.lmList[self.tipIds[0] - 1][1]:
            fingers.append(1)
        else:
            fingers.append(0)

        # Fingers
        for id in range(1,5):
            if self.lmList[self.tipIds[id]][2] < self.lmList[self.tipIds[id] - 2][2]:
                fingers.append(1)
            else:
                fingers.append(0)

            # totalFingers = fingers.count(1)

        return fingers

    def finddistance(self,p1,p2,draw=True,r=15,t=3):
        x1,y1 = self.lmList[p1][1:]
        x2,y2 = self.lmList[p2][1:]
        cx,cy = (x1 + x2) // 2,(y1 + y2) // 2

        if draw:
            cv2.line(img,(x1,y1),(x2,y2),t)
            cv2.circle(img,r,cv2.FILLED)
            cv2.circle(img,cv2.FILLED)
            length = math.hypot(x2 - x1,y2 - y1)

        return length,[x1,y1,x2,y2,cy]

def main():
    pTime = 0
    cTime = 0
    cap = cv2.VideoCapture(1)
    detector = handDetector()
    while True:
        success,img = cap.read()
        img = detector.findHands(img)
        lmList,bBox = detector.findPosition(img)
        if len(lmList) != 0:
            print(lmList[4])

        cTime = time.time()
        fps = 1 / (cTime - pTime)
        pTime = cTime

        cv2.putText(img,str(int(fps)),(10,70),cv2.FONT_HERShey_PLAIN,3,3)

        cv2.imshow("Image",img)
        cv2.waitKey(1)

if __name__ == "__main__":
    main()

我收到以下错误

回溯(最近一次调用最后一次): 文件“f:\Python-programming\AI Virtual Painter\HandTrackingModule.py”,第 116 行,在 主要的() 文件“f:\Python-programming\AI Virtual Painter\HandTrackingModule.py”,第 100 行,在 main img = 检测器.findHands(img) 文件“f:\Python-programming\AI Virtual Painter\HandTrackingModule.py”,第 21 行,在 findHands 中 imgRGB = cv2.cvtColor(img,cv2.COLOR_BGR2HSV) cv2.error: OpenCV(4.5.2) C:\Users\runneradmin\AppData\Local\Temp\pip-req-build-ttbyx0jz\opencv\modules\imgproc\src\color.cpp:182: 错误: (-215 :Assertion Failed) !_src.empty() 在函数 'cv::cvtColor'

信息:为 cpu 创建了 TensorFlow Lite XNNPACK 委托。

谁能弄清楚我的电脑发生了什么 提前致谢

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?