如何解决我该如何修复这个 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 举报,一经查实,本站将立刻删除。