色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          "); //-->

          博客專欄

          EEPW首頁 > 博客 > 碼農(nóng)也來玩奧運開幕式“超級變變變”!相機動捕,實時轉(zhuǎn)換賽事圖標(biāo),項目開源可試玩

          碼農(nóng)也來玩奧運開幕式“超級變變變”!相機動捕,實時轉(zhuǎn)換賽事圖標(biāo),項目開源可試玩

          發(fā)布人:大數(shù)據(jù)文摘 時間:2021-08-07 來源:工程師 發(fā)布文章

          大家都有在看奧運會嗎?

          根據(jù)發(fā)稿前的數(shù)據(jù)統(tǒng)計,目前中國金牌數(shù)量24,位列第一,獎牌總數(shù)51,僅次于美國的59,位列第二。

          在為運動員們加油助威的同時,我們不妨再回顧一下本屆奧運會開幕式。

          7月23日,東京時間晚上8點,延期一年的東京奧運會終于開幕,本應(yīng)座無虛席可容納6.8萬人的看臺上,因防疫需要幾乎空無一人。

          在開幕儀式上,最讓人驚喜的節(jié)目之一便是將日本老牌節(jié)目《超級變變變》的風(fēng)格搬運到了各個項目圖標(biāo)中,表演者們相互配合,用道具搭配肢體動作,展現(xiàn)了乒乓球、射擊、鐵人三項等50個圖標(biāo)。

          其實,在1964年的東京奧運會上,日本人就首次發(fā)明了體育項目圖標(biāo),隨后這也逐漸成為奧運會的傳統(tǒng)之一,得以延續(xù)。

          借著奧運熱潮,不少象形文字項目也受到了關(guān)注。

          比如,日本一位叫做高橋的嵌入式工程師就親自開發(fā)了一個軟件,通過相機捕捉動作和姿勢,然后把它們變成奧運風(fēng)格的象形動圖,就像這樣:

          1.gif

          最終識別效果如下圖所示,文摘菌只能說,都是“動作不夠,機器來湊”啊。

          2.gif3.gif

          手把手教你把自己變成象形動圖

          目前,該項目已經(jīng)在GitHub上開源了。

          4.png

          GitHub鏈接:

          https://github.com/Kazuhito00/Tokyo2020-Pictogram-using-MediaPipe

          首先,我們需要創(chuàng)建一個GitHub的存儲庫。

          $ git clone https://github.com/Kazuhito00/Tokyo2020-Pictogram-using-MediaPipe.git
          $ cd Tokyo2020-Pictogram-using-MediaPipe

          然后,需要創(chuàng)建一個Python虛擬環(huán)境,并安裝所需要的庫。

          $ python -m venv .venv
          $ source .venv/bin/activate
          $ pip install mediapipe opencv-python

          準備工作做完之后,可能會遇到在本地代碼無效的情況,可以對VideoCapture的寬度和高度適當(dāng)做出調(diào)整。

          -    parser.add_argument("--width", help='cap width', type=int, default=640)
          -    parser.add_argument("--height", help='cap height', type=int, default=360)
          +    parser.add_argument("--width", help='cap width', type=int, default=960)
          +    parser.add_argument("--height", help='cap height', type=int, default=540)

          隨后就可以運行該項目了。

          $ python main.py

          這時候你就會發(fā)現(xiàn),相機識別出來的圖變成了這個樣子:

          5.png

          最后,高橋也大方地給出了試玩地址,感興趣的同學(xué)可別錯過了:

          6.png

          試玩地址:

          https://pictogram-san.com/

          象形動圖升級:霹靂舞也能玩出花!

          這么有意思的項目僅限于此未免有些可惜了。

          于是,一位叫做巖田智哉的同學(xué)就對高橋的程序進行了進一步的改進和完善,比如說,用來跳霹靂舞。

          由于身體機能的下降,巖田放棄了在轉(zhuǎn)動攝像機時實時制作象形圖,轉(zhuǎn)而嘗試通過讓程序讀取視頻,來制作象形圖。

          考慮到這點后,他做出了如下修改,把程序改成了由命令行參數(shù)傳遞的視頻文件的象形圖,同時還刪除了反轉(zhuǎn)視頻的邏輯。

          -    parser.add_argument("--device", type=int, default=0)
          +    parser.add_argument('--file', type=str, required=True, help="video file path")
               parser.add_argument("--width", help='cap width', type=int, default=960)
               parser.add_argument("--height", help='cap height', type=int, default=540)
          @@ -43,7 +43,7 @@ def main():
               # 引數(shù)解析 #################################################################
               args = get_args()
          -    cap_device = args.device
          +    cap_file = args.file
               cap_width = args.width
               cap_height = args.height
          @@ -55,7 +55,7 @@ def main():
               rev_color = args.rev_color
               # カメラ準備 ###############################################################
          -    cap = cv.VideoCapture(cap_device)
          +    cap = cv.VideoCapture(cap_file)
               cap.set(cv.CAP_PROP_FRAME_WIDTH, cap_width)
               cap.set(cv.CAP_PROP_FRAME_HEIGHT, cap_height)
          @@ -86,7 +86,7 @@ def main():
                   ret, image = cap.read()
                   if not ret:
                       break
          -        image = cv.flip(image, 1)  # ミラー表示
          +        #image = cv.flip(image, 1)  # ミラー表示
                   debug_image01 = copy.deepcopy(image)
                   debug_image02 = np.zeros((image.shape[0], image.shape[1], 3), np.uint8)
                   cv.rectangle(debug_image02, (0, 0), (image.shape[1], image.shape[0]),

          然后就能得到這樣的視頻識別效果:

          7.png

          想看動圖?滿足你:

          8.gif9.gif

          怎么樣,是不是覺得竟然還有一絲酷炫?

          最后,巖田表示,既然都做到這一步了,我們就順理成章地再添加邏輯,把這個栩栩如生的視頻保存為一個單獨的mp4文件。

          第一次加載作為命令行參數(shù)傳遞的視頻文件時,需要創(chuàng)建一個文件名為<UTC時間戳>-pictgram-output.mp4的視頻文件,并在每次循環(huán)后添加一個進程來導(dǎo)出象形圖象即可。

          #!/usr/bin/env python
           # -*- coding: utf-8 -*-
           import copy
          +from datetime import datetime
           import math
           import argparse
          @@ -79,6 +80,8 @@ def main():
                   color = (100, 33, 3)
                   bg_color = (255, 255, 255)
          +    is_first = True
          +    output_video = None
               while True:
                   display_fps = cvFpsCalc.get()
          @@ -86,6 +89,7 @@ def main():
                   ret, image = cap.read()
                   if not ret:
                       break
          +
                   #image = cv.flip(image, 1)  # ミラー表示
                   debug_image01 = copy.deepcopy(image)
                   debug_image02 = np.zeros((image.shape[0], image.shape[1], 3), np.uint8)
          @@ -125,7 +129,18 @@ def main():
                   cv.imshow('Tokyo2020 Debug', debug_image01)
                   cv.imshow('Tokyo2020 Pictogram', debug_image02)
          +        if is_first:
          +            fmt = cv.VideoWriter_fourcc('m', 'p', '4', 'v')
          +            fps = cap.get(cv.CAP_PROP_FPS)
          +            now = datetime.now().strftime('%Y-%m-%d-%H%M%S')
          +            output_video = cv.VideoWriter(f'{now}-pictgram-output.mp4', fmt, fps, (debug_image02.shape[1], debug_image02.shape[0]))
          +            is_first = False
          +
          +        output_video.write(debug_image02)
          +
               cap.release()
          +    if output_video:
          +        output_video.release()
               cv.destroyAllWindows()

          基于機器學(xué)習(xí)技術(shù)的手勢識別算法MediaPipe

          據(jù)了解,高橋所使用的為谷歌開源機器學(xué)習(xí)工具“MediaPipe”。

          MediaPipe是一種基于機器學(xué)習(xí)技術(shù)的手勢識別算法,其特點是準確率高,支持五指和手勢追蹤,可根據(jù)一幀圖像推斷出單手21個立體節(jié)點。

          與目前市面上較先進的手勢識別技術(shù)相比,MediaPipe不需要依賴臺式機,在手機上就能進行實時追蹤,還支持同時追蹤多只手,識別遮擋等。

          10.gif

          MediaPipe框架有3個模型組成,包括:手掌識別模型BlazePalm(用于識別手的整體框架和方向)、Landmark模型(識別立體手部節(jié)點)、手勢識別模型(將識別到的節(jié)點分類成一系列手勢)。

          其中,BlazePalm是一個可識別單幀圖像的模型,主要為Landmark模型提供準確剪裁的手掌圖像,在經(jīng)過訓(xùn)練后手掌識別準確率可達95.7%。這大大降低了對旋轉(zhuǎn)、轉(zhuǎn)化和縮放等數(shù)據(jù)增強方式的依賴,讓算法將更多計算能力用在提高預(yù)測準確性上。

          此外,BlazePalm可識別多種不同手掌大小,還能識別手部遮擋,并且能通過對手臂、軀干或個人特征等的識別來準確定位手部。

          Landmark模型在BlazePalm基礎(chǔ)上識別到的21個立體節(jié)點坐標(biāo),這些節(jié)點之間的位置遮擋也可被識別。

          通過手勢識別模型,從Landmark提取的數(shù)據(jù)來推斷每根手指伸直或彎曲等動作,接著將這些動作與預(yù)設(shè)的手勢匹配,以預(yù)測基礎(chǔ)的靜態(tài)手勢。預(yù)設(shè)手勢包括美國、歐洲、中國通用手勢,以及豎大拇指、握拳、OK、“蜘蛛俠”等。

          11.png

          對于MediaPipe,更為主流是將其作為手語識別和翻譯的輔助方式,如果再結(jié)合AR/VR頭顯的輸入方式,或許可以進一步提升聽障人士溝通效率。

          當(dāng)然,我們也十分期待高橋這種腦洞大開的項目。

          *博客內(nèi)容為網(wǎng)友個人發(fā)布,僅代表博主個人觀點,如有侵權(quán)請聯(lián)系工作人員刪除。



          關(guān)鍵詞: AI

          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉