摘要:同時打印出了手上的每個結點的位置變化。解決方案使用國內鏡像安裝這時候,考慮使用國內鏡像安裝,會快很多。點擊下面的即可。
下面是我的關于Opencv的手勢識別代碼模型。該源碼來自于B站Opencv的大神教程
這個代碼可以復制后直接運行,看出效果的。
#!/usr/bin/python3.7# coding=utf-8import cv2import mediapipe as mpimport time# 導入opencv模塊# 捕捉幀,筆記本攝像頭設置為0即可""" VideoCapture第一個參數就是攝像頭編號"""capture =cv2.VideoCapture(0,cv2.CAP_DSHOW)# 初始化(模型使用之前)mpHands =mp.solutions.handshands=mpHands.Hands()mpDraw=mp.solutions.drawing_utilspTime=0cTime=0# 循環顯示幀while True : success, img = capture.read() imgRGB=cv2.cvtColor(img,cv2.COLOR_BGR2RGB) results=hands.process(imgRGB) """在顯示圖片之前,我們需要對圖像進行一些處理""" # 下面這個函數,當手放入攝像頭范圍內,就會返回相應的Landmark值,否則返回的是None #print(results.multi_hand_landmarks) # 輸出手的每個坐標(一只手幾十個點) if results.multi_hand_landmarks: print("讀取成功!") for handLms in results.multi_hand_landmarks: for id, lm in enumerate(handLms.landmark): print(id,lm) mpDraw.draw_landmarks(img, handLms,mpHands.HAND_CONNECTIONS) # 第三個參數的意思是,讓手中的節點連接。 cv2.imshow("Carmer", img) if cv2.waitKey(1) == ord("q"): # 按Q退出 break
這個代碼是封裝好的,都后面如果需要就是直接引用。不過也可以直接運行這個程序,也同樣能出結果。
import cv2import mediapipe as mpimport timeclass 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 def findHands(self, img, draw=True): imgRGB = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) 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, img, handNo=0, draw=True): 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) # print(id, cx, cy) lmList.append([id, cx, cy]) # if draw: 這部分代碼畫出了手上所有結點,因為比較難看,就注釋掉了。 # cv2.circle(img, (cx, cy), 15, (255, 0, 255), cv2.FILLED) return lmListdef main(): pTime = 0 cTime = 0 cap = cv2.VideoCapture(0) detector = handDetector() while True: success, img = cap.read() img = detector.findHands(img) lmList = 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, (255, 0, 255), 3) cv2.imshow("Image", img) cv2.waitKey(1)if __name__ == "__main__": main()
同時打印出了手上的每個結點的位置變化。
Pycharm2021,Python3.7 .
報錯:
imgRGB = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
cv2.error: OpenCV(4.5.3) C:/Users/runneradmin/AppData/Local/Temp/pip-req-build-_xlv4eex/opencv/modules/imgproc/src/color.cpp:182: error: (-215:Assertion failed) !_src.empty() in function ‘cv::cvtColor’
這個問題,網上的一些解釋是,如果你導入的是一個靜態圖片,那么要么是你的斜杠寫錯,
或者是你的路徑中有中文,不妨換個沒有中文的路徑,或者修改圖片為英文試試。
但是我這里是攝像頭:
cap = cv2.VideoCapture(1) #這個是B站源碼中的攝像頭編號
使用B站大神源碼報錯后,我把上面這行代碼改成下面這樣,就好了。
cap = cv2.VideoCapture(0)
在控制臺上使用pip指令下載是,經常碰到超時問題,本身文件不大,但是你的下載速度只有12kb/s甚至只有幾kb每秒
遇到的問題例如下面這個:
其實這個問題就是因為你的下載速度太慢導致的。
這時候,考慮使用國內鏡像安裝,會快很多。.點擊進入國內鏡像安裝教程
一般numpy,opencv-python都有國內鏡像。不過我安裝mediatepipe時,并沒有找到國內鏡像,但是控制臺cmd使用下面這個指令太慢了。也是只有幾kb/s
pip install mediapipe
所以我選擇了去PyCharm去下載:
方式:
File—>Setting—>Project:python-project-Python Interpreter(Python解釋器)
點擊“+”,添加解釋器,然后在搜索框中搜索你需要的package即可。opencv-python,numpy,mediapipe都可以直接搜到。
點擊下面的Install Package即可。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/121061.html
摘要:十開放模式識別項目開放模式識別項目,致力于開發出一套包含圖像處理計算機視覺自然語言處理模式識別機器學習和相關領域算法的函數庫。 一、開源生物特征識別庫 OpenBROpenBR 是一個用來從照片中識別人臉的工具。還支持推算性別與年齡。使用方法:$ br -algorithm FaceRecognition -compare me.jpg you.jpg二、計算機視覺庫 OpenCVOpenC...
摘要:可以針對筆者常用的數獨本文的實現都基于該,實現數獨的識別求解并把答案自動填入。專家級別的平均秒完成求解包括圖像數字提取,識別過程,完成全部操作。步驟四數獨求解,生成答案,并生成需要填充的數字序列。 1 序 ??數獨是源自18世紀瑞士的一種數學游戲。是一種運用紙、筆進行演算的邏輯游戲。玩家需要根據9×9盤面上的已知數字,推理出所有剩余空格的數字,并滿足每一行、每一列、每一個粗線宮(3*3...
摘要:時間永遠都過得那么快,一晃從年注冊,到現在已經過去了年那些被我藏在收藏夾吃灰的文章,已經太多了,是時候把他們整理一下了。那是因為收藏夾太亂,橡皮擦給設置私密了,不收拾不好看呀。 ...
閱讀 3063·2021-10-12 10:20
閱讀 2808·2021-09-27 13:56
閱讀 790·2021-09-27 13:36
閱讀 1424·2021-09-26 09:46
閱讀 2417·2019-08-30 14:02
閱讀 2684·2019-08-28 18:14
閱讀 1257·2019-08-26 10:32
閱讀 1699·2019-08-23 18:25