这个代码照着b站视频一字一句打的,反复对着好几遍,都没有看出问题,希望各位能指出我错误地方
import cv2
from cvzone.HandTrackingModule import HandDetector
cap = cv2.VideoCapture(0)
cap.set(3, 1280)
cap.set(4, 720)
detector = HandDetector(detectionCon=0.8)
while True:
rat, img = cap.read()
hands, img = detector.findHands(img)
img1 = cv2.imread("asd.jpg")
if len(hands) == 2:
#print("zoom gesture")
#print(detector.fingersUp(hands[0]), detector.fingersUp(hands[1]))
if detector.fingersUp(hands[0]) == [1, 0, 0, 0, 0] and detector.fingersUp(hands[1]) == [1, 0, 0, 0, 0]:
lmList1 = hands[0]["lmList"] # 第一只手的关键点坐标信息,hands是一个字典
lmList2 = hands[1]["lmList"]
#length,info,img = detector.findDistance(8,8,img)
#length, info, img = detector.findDistance(hands[0]["center"], hands[1]["center"], img)
length, info, img = detector.findDistance(lmList1[8], lmList2[8], img)
print(length)
img[0:336, 0:478] = img1
cv2.imshow('img', img)
if cv2.waitKey(1) == ord('q'):
break
没有看到代码
根据您提供的截图,可以看到代码的第26行缺少一个冒号,应该改为:
if guess_row==ship_row and guess_col==ship_col:
同时,您需要注意代码的缩进是否正确,以及变量名是否正确。
是opencv不同版本依赖导致dectector.distance底层api定义不同导致的。
b站视频的opencv依赖版本可能较高,你本地的较低
从opencv3.2.0.7开始,大部分api支持返回3个参数,增加一个返回要处理的图像
所以你可以升级本地的opencv版本来解决
pip install --upgrade opencv -i https://pypi.douban.com/simple
用 pip3 list 看下本地opencv和cvzone中的版本与B站上的是否一致。
可以学会去看看下载到本地的源码,这样方便定位问题
检查22行,函数返回值个数和变量个数对不上
以下答案由GPT-3.5大模型与博主波罗歌共同编写:
非常抱歉,由于您没有提供您的代码和错误信息,我们无法帮助您找出问题所在。但是,以下是一些常见的Python出错情况:
拼写错误:可能会在变量名、函数名或方法名中出现拼写错误,导致代码无法正常运行。
缩进错误:在Python中,缩进是非常重要的,因为它指示代码块的开头和结尾。如果缩进不正确,代码就会出错。
语法错误:如果您的代码有语法错误,比如少了一个逗号或者忘记了一个括号,这也会导致代码出错。
类型错误:当您尝试在不兼容的数据类型之间进行操作时,Python会报类型错误。例如,您不能将整数和字符串相加,除非您显式地转换它们。
索引错误:如果您尝试访问列表或字符串中不存在的索引,则会发生索引错误。
以下是一些常见的解决方法:
仔细检查代码:仔细检查您的代码,特别是标点符号、缩进和语法错误。
使用调试器:使用Python的调试器可以帮助您检查代码中的错误。
将代码拆分为更小的部分:将代码拆分为更小的部分可以帮助您更容易地找到错误。
如果您将代码和错误信息提供给我们,我们将能够更具体地帮助您解决问题。
如果我的回答解决了您的问题,请采纳!