成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

基于Opencv的手勢(shì)識(shí)別

曹金海 / 1443人閱讀

摘要:同時(shí)打印出了手上的每個(gè)結(jié)點(diǎn)的位置變化。解決方案使用國(guó)內(nèi)鏡像安裝這時(shí)候,考慮使用國(guó)內(nèi)鏡像安裝,會(huì)快很多。點(diǎn)擊下面的即可。

一、 效果(版本2的效果)


下面是我的關(guān)于Opencv的手勢(shì)識(shí)別代碼模型。該源碼來(lái)自于B站Opencv的大神教程

二、全部源碼

版本1:未封裝代碼

這個(gè)代碼可以復(fù)制后直接運(yùn)行,看出效果的。

#!/usr/bin/python3.7# coding=utf-8import cv2import mediapipe as mpimport time# 導(dǎo)入opencv模塊# 捕捉幀,筆記本攝像頭設(shè)置為0即可""" VideoCapture第一個(gè)參數(shù)就是攝像頭編號(hào)"""capture =cv2.VideoCapture(0,cv2.CAP_DSHOW)# 初始化(模型使用之前)mpHands =mp.solutions.handshands=mpHands.Hands()mpDraw=mp.solutions.drawing_utilspTime=0cTime=0# 循環(huán)顯示幀while True :    success, img = capture.read()    imgRGB=cv2.cvtColor(img,cv2.COLOR_BGR2RGB)    results=hands.process(imgRGB)    """在顯示圖片之前,我們需要對(duì)圖像進(jìn)行一些處理"""    # 下面這個(gè)函數(shù),當(dāng)手放入攝像頭范圍內(nèi),就會(huì)返回相應(yīng)的Landmark值,否則返回的是None    #print(results.multi_hand_landmarks)    # 輸出手的每個(gè)坐標(biāo)(一只手幾十個(gè)點(diǎn))    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) # 第三個(gè)參數(shù)的意思是,讓手中的節(jié)點(diǎn)連接。    cv2.imshow("Carmer", img)    if cv2.waitKey(1) == ord("q"):  # 按Q退出     break

版本2:封裝好的代碼

這個(gè)代碼是封裝好的,都后面如果需要就是直接引用。不過(guò)也可以直接運(yùn)行這個(gè)程序,也同樣能出結(jié)果。

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:   這部分代碼畫出了手上所有結(jié)點(diǎn),因?yàn)楸容^難看,就注釋掉了。                #     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()

同時(shí)打印出了手上的每個(gè)結(jié)點(diǎn)的位置變化。

三、 開(kāi)發(fā)工具

Pycharm2021,Python3.7 .

四、 遇到的問(wèn)題記錄

第一個(gè)問(wèn)題: error: (-215:Assertion failed) !_src.empty() in function ‘cv::cvtColor’

報(bào)錯(cuò):

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’

這個(gè)問(wèn)題,網(wǎng)上的一些解釋是,如果你導(dǎo)入的是一個(gè)靜態(tài)圖片,那么要么是你的斜杠寫錯(cuò),
或者是你的路徑中有中文,不妨換個(gè)沒(méi)有中文的路徑,或者修改圖片為英文試試。

但是我這里是攝像頭

解決方案:(可能只適用于我,不妨可以試試)

    cap = cv2.VideoCapture(1)	#這個(gè)是B站源碼中的攝像頭編號(hào)

使用B站大神源碼報(bào)錯(cuò)后,我把上面這行代碼改成下面這樣,就好了。

    cap = cv2.VideoCapture(0)	

第二個(gè)問(wèn)題:使用pip指令,下載opencv-python,numpy等報(bào)錯(cuò)

在控制臺(tái)上使用pip指令下載是,經(jīng)常碰到超時(shí)問(wèn)題,本身文件不大,但是你的下載速度只有12kb/s甚至只有幾kb每秒
遇到的問(wèn)題例如下面這個(gè):

其實(shí)這個(gè)問(wèn)題就是因?yàn)槟愕南螺d速度太慢導(dǎo)致的。

解決方案:使用國(guó)內(nèi)鏡像安裝

這時(shí)候,考慮使用國(guó)內(nèi)鏡像安裝,會(huì)快很多。.點(diǎn)擊進(jìn)入國(guó)內(nèi)鏡像安裝教程
一般numpy,opencv-python都有國(guó)內(nèi)鏡像。不過(guò)我安裝mediatepipe時(shí),并沒(méi)有找到國(guó)內(nèi)鏡像,但是控制臺(tái)cmd使用下面這個(gè)指令太慢了。也是只有幾kb/s

pip install mediapipe

所以我選擇了去PyCharm去下載:
方式:
File—>Setting—>Project:python-project-Python Interpreter(Python解釋器)


點(diǎn)擊“+”,添加解釋器,然后在搜索框中搜索你需要的package即可。opencv-python,numpy,mediapipe都可以直接搜到。

點(diǎn)擊下面的Install Package即可。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/121061.html

相關(guān)文章

  • 機(jī)器視覺(jué)、模式識(shí)別庫(kù)匯總

    摘要:十開(kāi)放模式識(shí)別項(xiàng)目開(kāi)放模式識(shí)別項(xiàng)目,致力于開(kāi)發(fā)出一套包含圖像處理計(jì)算機(jī)視覺(jué)自然語(yǔ)言處理模式識(shí)別機(jī)器學(xué)習(xí)和相關(guān)領(lǐng)域算法的函數(shù)庫(kù)。 一、開(kāi)源生物特征識(shí)別庫(kù) OpenBROpenBR 是一個(gè)用來(lái)從照片中識(shí)別人臉的工具。還支持推算性別與年齡。使用方法:$ br -algorithm FaceRecognition -compare me.jpg you.jpg二、計(jì)算機(jī)視覺(jué)庫(kù) OpenCVOpenC...

    habren 評(píng)論0 收藏0
  • 記數(shù)獨(dú)X--Android openCV識(shí)別數(shù)獨(dú)并自動(dòng)求解填充APP開(kāi)發(fā)過(guò)程

    摘要:可以針對(duì)筆者常用的數(shù)獨(dú)本文的實(shí)現(xiàn)都基于該,實(shí)現(xiàn)數(shù)獨(dú)的識(shí)別求解并把答案自動(dòng)填入。專家級(jí)別的平均秒完成求解包括圖像數(shù)字提取,識(shí)別過(guò)程,完成全部操作。步驟四數(shù)獨(dú)求解,生成答案,并生成需要填充的數(shù)字序列。 1 序 ??數(shù)獨(dú)是源自18世紀(jì)瑞士的一種數(shù)學(xué)游戲。是一種運(yùn)用紙、筆進(jìn)行演算的邏輯游戲。玩家需要根據(jù)9×9盤面上的已知數(shù)字,推理出所有剩余空格的數(shù)字,并滿足每一行、每一列、每一個(gè)粗線宮(3*3...

    yvonne 評(píng)論0 收藏0
  • 首次公開(kāi),整理12年積累博客收藏夾,零距離展示《收藏夾吃灰》系列博客

    摘要:時(shí)間永遠(yuǎn)都過(guò)得那么快,一晃從年注冊(cè),到現(xiàn)在已經(jīng)過(guò)去了年那些被我藏在收藏夾吃灰的文章,已經(jīng)太多了,是時(shí)候把他們整理一下了。那是因?yàn)槭詹貖A太亂,橡皮擦給設(shè)置私密了,不收拾不好看呀。 ...

    Harriet666 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<