国产无码免费,人妻口爆,国产V在线,99中文精品7,国产成人无码AA精品一,制度丝袜诱惑av,久久99免费麻辣视频,蜜臀久久99精品久久久久久酒店
        訂閱
        糾錯(cuò)
        加入自媒體

        使用 OpenCV 開(kāi)發(fā)虛擬鍵盤

        介紹OpenCV 是最流行的計(jì)算機(jī)視覺(jué)任務(wù)庫(kù),它是用于機(jī)器學(xué)習(xí)、圖像處理等的跨平臺(tái)開(kāi)源庫(kù),用于開(kāi)發(fā)實(shí)時(shí)計(jì)算機(jī)視覺(jué)應(yīng)用程序。

        CVzone 是一個(gè)計(jì)算機(jī)視覺(jué)包,它使用 OpenCV 和 Media Pipe 庫(kù)作為其核心,使我們易于運(yùn)行,例如手部跟蹤、人臉檢測(cè)、面部標(biāo)志檢測(cè)、姿勢(shì)估計(jì)等,以及圖像處理和其他計(jì)算機(jī)視覺(jué)相關(guān)的應(yīng)用程序。

        使用 OpenCV 實(shí)現(xiàn)虛擬鍵盤

        讓我們創(chuàng)建一個(gè)虛擬鍵盤。首先,讓我們安裝所需的模塊。

        pip install numpy

        pip install opencv-python

        pip install cvzone

        pip install pynput

        使用 OpenCV 為虛擬鍵盤導(dǎo)入庫(kù)

        現(xiàn)在讓我們導(dǎo)入所需的模塊import cv2

        import cvzone

        from cvzone.HandTrackingModule import HandDetector

        from time import sleep

        import numpy as np

        from pynput.keyboard import Controller

        這里我們從 cvzone.HandTrackingModule 導(dǎo)入 HandDetector 模塊,然后為了使虛擬鍵盤工作,我們需要從 pynput.keyboard 導(dǎo)入Controller。

        cap = cv2.VideoCapture(0, cv2.CAP_DSHOW)

        cap.set(3, 1280)

        cap.set(4, 720)

        現(xiàn)在讓我們從 cv2.Videocapture 獲取實(shí)時(shí)輸入

        image.png

        final_text = ""

        我們以 0.8 的檢測(cè)置信度初始化 HandDetector 并將其分配給檢測(cè)器。然后我們根據(jù)鍵盤的布局創(chuàng)建一個(gè)列表數(shù)組,并定義一個(gè)空字符串來(lái)存儲(chǔ)鍵入的鍵。

        定義繪制函數(shù)

        keyboard = Controller()

        image.png

        初始化鍵盤控制器,并定義一個(gè)名為draw()的函數(shù),它接受兩個(gè)參數(shù),即圖像和按鈕列表并返回圖像。在draw()函數(shù)內(nèi)部,我們使用 cvzone 的cornerRect函數(shù)在每個(gè)鍵的角落繪制矩形邊緣。這是為了讓我們的鍵盤布局看起來(lái)更好看。就像下面的圖片。

        你也可以嘗試更改不同的顏色。class Button():

             def __init__(self, pos, text, size=[85, 85]):
                          self.pos = pos
                          self.size = size
                          self.text = text

        然后我們定義一個(gè)名為 Button() 的類,并提供位置、文本和大小作為輸入,以便我們可以按照明確定義的順序排列鍵盤按鍵。

        image.png

        上面的循環(huán)將遍歷鍵盤按鍵和 Button 對(duì)象,我們?cè)谄渲薪o出位置和文本作為輸入附加在一個(gè)名為 button list 的列表中。稍后我們可以將這個(gè)列表傳遞給 draw 函數(shù)以在我們的實(shí)時(shí)框架之上進(jìn)行繪制。

        使用 OpenCV 的虛擬鍵盤主程序

        重要的部分來(lái)了。

        image.png

        image.png

        在 while 循環(huán)中,首先我們讀取實(shí)時(shí)輸入幀并將其存儲(chǔ)在一個(gè)名為img的變量中。然后我們將該圖像傳遞給*檢測(cè)器.findHands()*以便在幀中找到手。然后在該圖像中,我們需要找到檢測(cè)到的手的位置和邊界框信息。

        在這里我們可以找到我們的食指和中指的頂點(diǎn)之間的距離,如果兩者之間的距離小于某個(gè)閾值,那么我們就可以輸入我們所指示的字母。

        一旦我們獲得了位置,我們就會(huì)遍歷整個(gè)位置列表。從該列表中,我們找到按鈕位置和按鈕大小,然后根據(jù)明確定義的方式將其繪制在框架上。

        圖 1:手地標(biāo)模型

        之后,我們需要找到食指和中指的頂點(diǎn)之間的距離。在上圖中,你可以看到我們需要的最高點(diǎn)是點(diǎn) 8 和點(diǎn) 12。因此,我們需要在距離查找函數(shù)中傳遞 8, 12 以獲得它們之間的距離。

        在上面的代碼中,你可以看到 detector.findDistance(),我們通過(guò)了 8、12 和圖像來(lái)查找距離,并將繪制標(biāo)志設(shè)置為 false,這樣我們就不需要兩點(diǎn)之間的任何線。

        如果點(diǎn)之間的距離非常小,我們將使用 press() 函數(shù)來(lái)按下按鍵。在上面的代碼keyboard.press() 中,我們傳遞button.text以顯示按下的鍵。最后,我們?cè)阪I盤布局下方繪制一個(gè)小的白色矩形框,以顯示按下的鍵。

        一旦你執(zhí)行了整個(gè)代碼,它看起來(lái)像這樣。

        將食指和中指靠近特定字母的頂部后,你可以鍵入該字母。

        如果你需要更自定義的鍵盤布局,我們可以使鍵盤布局透明。我們只需要添加一個(gè)透明布局函數(shù)并將*draw()函數(shù)替換為transparent_layout()*函數(shù)即可。

        讓我們定義transparent_layout()函數(shù)。下面是函數(shù)的代碼,它采用與draw()函數(shù)相同的輸入。在這里,我們將 numpy 的zero_like()函數(shù)分配給 名為imgNew的變量,并對(duì)其執(zhí)行所需的操作,例如獲得角矩形、為每個(gè)鍵創(chuàng)建矩形框并將文本放入框內(nèi)。之后,我們將該圖像復(fù)制到一個(gè)新變量并創(chuàng)建一個(gè)imgNew掩碼,然后我們使用 OpenCV 的*addWeighted()*函數(shù)將掩碼放置在實(shí)際圖像的頂部。因此,這使鍵盤布局透明。

        自定義鍵盤

        image.png

        一旦將while 循環(huán)中的*draw()函數(shù)替換為transparent_layout()*函數(shù),它將如下所示。(下圖)

        使用 OpenCV 的虛擬鍵盤的完整代碼

        下面是完整的代碼

        image.png

        image.png

        image.pngimage.png

        image.png

        結(jié)論

        這是虛擬鍵盤的實(shí)現(xiàn),如果你想完善它,你也可以試著添加按鍵聲音,然后我們還可以讓鍵盤布局在框架內(nèi)移動(dòng)。

        聲明: 本文由入駐維科號(hào)的作者撰寫,觀點(diǎn)僅代表作者本人,不代表OFweek立場(chǎng)。如有侵權(quán)或其他問(wèn)題,請(qǐng)聯(lián)系舉報(bào)。

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

        0條評(píng)論,0人參與

        請(qǐng)輸入評(píng)論內(nèi)容...

        請(qǐng)輸入評(píng)論/評(píng)論長(zhǎng)度6~500個(gè)字

        您提交的評(píng)論過(guò)于頻繁,請(qǐng)輸入驗(yàn)證碼繼續(xù)

        • 看不清,點(diǎn)擊換一張  刷新

        暫無(wú)評(píng)論

        暫無(wú)評(píng)論

          掃碼關(guān)注公眾號(hào)
          OFweek人工智能網(wǎng)
          獲取更多精彩內(nèi)容
          文章糾錯(cuò)
          x
          *文字標(biāo)題:
          *糾錯(cuò)內(nèi)容:
          聯(lián)系郵箱:
          *驗(yàn) 證 碼:

          粵公網(wǎng)安備 44030502002758號(hào)

          主站蜘蛛池模板: 欧美午夜精品| 丁香五月天激情网| 亚洲国产精品羞羞| 永靖县| 91资源在线| jizz日本大全| 河曲县| 三门峡市| 亚洲人妻网| 免费AV观看| 大石桥市| 丁青县| 亚洲天堂视频在线观看| 亭亭五月丁香| 欧美A片在线观看| 久久草网站| 亚州看片| 91在线小视频| 国产乱码精品一区二三区蜜臂| 白玉县| 余干县| 游戏| 不卡的av在线| 97大香| 宫西光在线| 海安县| 国产精品久久久| 亚洲看片| 第一福利导航视频| 国产拳交视频| jizz免费| 国产精品伦子伦免费视频| 欧美精品福利| 亚洲最大成人网站在线观看| 利辛县| 江阴市| 久久国产AV| ..真实国产乱子伦对白在线_!| 云霄县| 国产精品99精品无码视亚| 南华县|