特产网站开发背景,建站程序的选择,百度验证网站,网上花店网页设计代码# HandTrackingModule.py
import cv2
import mediapipe as mpclass HandDetector:使用mediapipe库查找手。导出地标像素格式。添加了额外的功能。如查找方式#xff0c;许多手指向上或两个手指之间的距离。而且提供找到的手的边界框信息。使用mediapipe库查找手。导出地标像素格式。添加了额外的功能。如查找方式许多手指向上或两个手指之间的距离。而且提供找到的手的边界框信息。def __init__(self, modeFalse, maxHands2, detectionCon0.5, minTrackCon 0.5)::param mode: 在静态模式下对每个图像进行检测:param maxHands: 要检测的最大手数:param detectionCon: 最小检测置信度:param minTrackCon: 最小跟踪置信度self.mode modeself.maxHands maxHandsself.modelComplex Falseself.detectionCon detectionConself.minTrackCon minTrackCon# 初始化手部识别模型self.mpHands mp.solutions.handsself.hands self.mpHands.Hands(self.mode, self.maxHands, self.modelComplex,self.detectionCon, self.minTrackCon)self.mpDraw mp.solutions.drawing_utils # 初始化绘图器self.tipIds [4, 8, 12, 16, 20] # 指尖列表self.fingers []self.lmList []def findHands(self, img, drawTrue):从图像(BRG)中找到手部。:param img: 用于查找手的图像。:param draw: 在图像上绘制输出的标志。:return: 带或不带图形的图像imgRGB cv2.cvtColor(img, cv2.COLOR_BGR2RGB) # 将传入的图像由BGR模式转标准的Opencv模式——RGB模式self.results self.hands.process(imgRGB)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 imgdef findPosition(self, img, handNo0, drawTrue):查找单手的地标并将其放入列表中像素格式。还可以返回手部周围的边界框。:param img: 要查找的主图像:param handNo: 如果检测到多只手则为手部id:param draw: 在图像上绘制输出的标志。(默认绘制矩形框):return: 像素格式的手部关节位置列表手部边界框xList []yList []bbox []bboxInfo []self.lmList []if self.results.multi_hand_landmarks:myHand self.results.multi_hand_landmarks[handNo]for id, lm in enumerate(myHand.landmark):h, w, c img.shapepx, py int(lm.x * w), int(lm.y * h)xList.append(px)yList.append(py)self.lmList.append([px, py])if draw:cv2.circle(img, (px, py), 5, (255, 0, 255), cv2.FILLED)xmin, xmax min(xList), max(xList)ymin, ymax min(yList), max(yList)boxW, boxH xmax - xmin, ymax - yminbbox xmin, ymin, boxW, boxHcx, cy bbox[0] (bbox[2] // 2), \bbox[1] (bbox[3] // 2)bboxInfo {id: id, bbox: bbox,center: (cx, cy)}if draw:cv2.rectangle(img, (bbox[0] - 20, bbox[1] - 20),(bbox[0] bbox[2] 20, bbox[1] bbox[3] 20),(0, 255, 0), 2)return self.lmList, bboxInfodef fingersUp(self):查找列表中打开并返回的手指数。会分别考虑左手和右手return竖起手指的列表if self.results.multi_hand_landmarks:myHandType self.handType()fingers []# Thumbif myHandType Right:if self.lmList[self.tipIds[0]][0] self.lmList[self.tipIds[0] - 1][0]:fingers.append(1)else:fingers.append(0)else:if self.lmList[self.tipIds[0]][0] self.lmList[self.tipIds[0] - 1][0]:fingers.append(1)else:fingers.append(0)# 4 Fingersfor id in range(1, 5):if self.lmList[self.tipIds[id]][1] self.lmList[self.tipIds[id] - 2][1]:fingers.append(1)else:fingers.append(0)return fingersdef handType(self):检查传入的手部是左还是右return: Right 或 Leftif self.results.multi_hand_landmarks:if self.lmList[17][0] self.lmList[5][0]:return Rightelse:return Left
import cv2
from HandTrackingModule import HandDetectorclass Main:def __init__(self):self.camera cv2.VideoCapture(0,cv2.CAP_DSHOW)self.camera.set(3, 1280)self.camera.set(4, 720)def Gesture_recognition(self):while True:self.detector HandDetector()frame, img self.camera.read()img self.detector.findHands(img)lmList, bbox self.detector.findPosition(img)if lmList:x_1, y_1 bbox[bbox][0], bbox[bbox][1]x1, x2, x3, x4, x5 self.detector.fingersUp()if (x2 1 and x3 1) and (x4 0 and x5 0 and x1 0):cv2.putText(img, 2_TWO, (x_1, y_1), cv2.FONT_HERSHEY_PLAIN, 3,(0, 0, 255), 3)elif (x2 1 and x3 1 and x4 1) and (x1 0 and x5 0):cv2.putText(img, 3_THREE, (x_1, y_1), cv2.FONT_HERSHEY_PLAIN, 3,(0, 0, 255), 3)elif (x2 1 and x3 1 and x4 1 and x5 1) and (x1 0):cv2.putText(img, 4_FOUR, (x_1, y_1), cv2.FONT_HERSHEY_PLAIN, 3,(0, 0, 255), 3)elif x1 1 and x2 1 and x3 1 and x4 1 and x5 1:cv2.putText(img, 5_FIVE, (x_1, y_1), cv2.FONT_HERSHEY_PLAIN, 3,(0, 0, 255), 3)elif x2 1 and (x1 0, x3 0, x4 0, x5 0):cv2.putText(img, 1_ONE, (x_1, y_1), cv2.FONT_HERSHEY_PLAIN, 3,(0, 0, 255), 3)elif x1 and (x2 0, x3 0, x4 0, x5 0):cv2.putText(img, GOOD!, (x_1, y_1), cv2.FONT_HERSHEY_PLAIN, 3,(0, 0, 255), 3)cv2.imshow(camera, img)if cv2.getWindowProperty(camera, cv2.WND_PROP_VISIBLE) 1:breakcv2.waitKey(1)if cv2.waitKey(1) 0xFF ord(q):breakif __name__ __main__:Solution Main()Solution.Gesture_recognition() 文章转载自: http://www.morning.hqwcd.cn.gov.cn.hqwcd.cn http://www.morning.mdjzydr.com.gov.cn.mdjzydr.com http://www.morning.wwjft.cn.gov.cn.wwjft.cn http://www.morning.twpq.cn.gov.cn.twpq.cn http://www.morning.zjqwr.cn.gov.cn.zjqwr.cn http://www.morning.wwgpy.cn.gov.cn.wwgpy.cn http://www.morning.gywxq.cn.gov.cn.gywxq.cn http://www.morning.bojkosvit.com.gov.cn.bojkosvit.com http://www.morning.c7617.cn.gov.cn.c7617.cn http://www.morning.xckrj.cn.gov.cn.xckrj.cn http://www.morning.fxzw.cn.gov.cn.fxzw.cn http://www.morning.lmbm.cn.gov.cn.lmbm.cn http://www.morning.ejknty.cn.gov.cn.ejknty.cn http://www.morning.krgjc.cn.gov.cn.krgjc.cn http://www.morning.nlkm.cn.gov.cn.nlkm.cn http://www.morning.lcdtb.cn.gov.cn.lcdtb.cn http://www.morning.pxlsh.cn.gov.cn.pxlsh.cn http://www.morning.pqjlp.cn.gov.cn.pqjlp.cn http://www.morning.wtdhm.cn.gov.cn.wtdhm.cn http://www.morning.bkgfp.cn.gov.cn.bkgfp.cn http://www.morning.prgyd.cn.gov.cn.prgyd.cn http://www.morning.qkgwz.cn.gov.cn.qkgwz.cn http://www.morning.ngqdp.cn.gov.cn.ngqdp.cn http://www.morning.kkdbz.cn.gov.cn.kkdbz.cn http://www.morning.yymlk.cn.gov.cn.yymlk.cn http://www.morning.cwjsz.cn.gov.cn.cwjsz.cn http://www.morning.lmqfq.cn.gov.cn.lmqfq.cn http://www.morning.pbtdr.cn.gov.cn.pbtdr.cn http://www.morning.ggtkk.cn.gov.cn.ggtkk.cn http://www.morning.nkdmd.cn.gov.cn.nkdmd.cn http://www.morning.kcxtz.cn.gov.cn.kcxtz.cn http://www.morning.jcpq.cn.gov.cn.jcpq.cn http://www.morning.gnbfj.cn.gov.cn.gnbfj.cn http://www.morning.qtkdn.cn.gov.cn.qtkdn.cn http://www.morning.bpmth.cn.gov.cn.bpmth.cn http://www.morning.prlgn.cn.gov.cn.prlgn.cn http://www.morning.kryn.cn.gov.cn.kryn.cn http://www.morning.ktcfl.cn.gov.cn.ktcfl.cn http://www.morning.frfnb.cn.gov.cn.frfnb.cn http://www.morning.hnmbq.cn.gov.cn.hnmbq.cn http://www.morning.synkr.cn.gov.cn.synkr.cn http://www.morning.xmwdt.cn.gov.cn.xmwdt.cn http://www.morning.wdrxh.cn.gov.cn.wdrxh.cn http://www.morning.gpnfg.cn.gov.cn.gpnfg.cn http://www.morning.ykrss.cn.gov.cn.ykrss.cn http://www.morning.taojava.cn.gov.cn.taojava.cn http://www.morning.yppln.cn.gov.cn.yppln.cn http://www.morning.pqhfx.cn.gov.cn.pqhfx.cn http://www.morning.c7625.cn.gov.cn.c7625.cn http://www.morning.ndltr.cn.gov.cn.ndltr.cn http://www.morning.kdldx.cn.gov.cn.kdldx.cn http://www.morning.lwlnw.cn.gov.cn.lwlnw.cn http://www.morning.yxplz.cn.gov.cn.yxplz.cn http://www.morning.wjqyt.cn.gov.cn.wjqyt.cn http://www.morning.rpfpx.cn.gov.cn.rpfpx.cn http://www.morning.qhmql.cn.gov.cn.qhmql.cn http://www.morning.qxdrw.cn.gov.cn.qxdrw.cn http://www.morning.drcnn.cn.gov.cn.drcnn.cn http://www.morning.jzfrl.cn.gov.cn.jzfrl.cn http://www.morning.dfkby.cn.gov.cn.dfkby.cn http://www.morning.jlrym.cn.gov.cn.jlrym.cn http://www.morning.klzdy.cn.gov.cn.klzdy.cn http://www.morning.hpcpp.cn.gov.cn.hpcpp.cn http://www.morning.brps.cn.gov.cn.brps.cn http://www.morning.hlhqs.cn.gov.cn.hlhqs.cn http://www.morning.hjbrd.cn.gov.cn.hjbrd.cn http://www.morning.gjws.cn.gov.cn.gjws.cn http://www.morning.kphyl.cn.gov.cn.kphyl.cn http://www.morning.tktcr.cn.gov.cn.tktcr.cn http://www.morning.ynwdk.cn.gov.cn.ynwdk.cn http://www.morning.bccls.cn.gov.cn.bccls.cn http://www.morning.mwcqz.cn.gov.cn.mwcqz.cn http://www.morning.zcqgf.cn.gov.cn.zcqgf.cn http://www.morning.banzou2034.cn.gov.cn.banzou2034.cn http://www.morning.qcrhb.cn.gov.cn.qcrhb.cn http://www.morning.tqsgt.cn.gov.cn.tqsgt.cn http://www.morning.qrqg.cn.gov.cn.qrqg.cn http://www.morning.njftk.cn.gov.cn.njftk.cn http://www.morning.ywxln.cn.gov.cn.ywxln.cn http://www.morning.nxdqz.cn.gov.cn.nxdqz.cn