内容标题22

  • <tr id='K93z0q'><strong id='K93z0q'></strong><small id='K93z0q'></small><button id='K93z0q'></button><li id='K93z0q'><noscript id='K93z0q'><big id='K93z0q'></big><dt id='K93z0q'></dt></noscript></li></tr><ol id='K93z0q'><option id='K93z0q'><table id='K93z0q'><blockquote id='K93z0q'><tbody id='K93z0q'></tbody></blockquote></table></option></ol><u id='K93z0q'></u><kbd id='K93z0q'><kbd id='K93z0q'></kbd></kbd>

    <code id='K93z0q'><strong id='K93z0q'></strong></code>

    <fieldset id='K93z0q'></fieldset>
          <span id='K93z0q'></span>

              <ins id='K93z0q'></ins>
              <acronym id='K93z0q'><em id='K93z0q'></em><td id='K93z0q'><div id='K93z0q'></div></td></acronym><address id='K93z0q'><big id='K93z0q'><big id='K93z0q'></big><legend id='K93z0q'></legend></big></address>

              <i id='K93z0q'><div id='K93z0q'><ins id='K93z0q'></ins></div></i>
              <i id='K93z0q'></i>
            1. <dl id='K93z0q'></dl>
              1. <blockquote id='K93z0q'><q id='K93z0q'><noscript id='K93z0q'></noscript><dt id='K93z0q'></dt></q></blockquote><noframes id='K93z0q'><i id='K93z0q'></i>

                人工智能/吃炸雞油油手切↘換視頻的正確姿勢

                去社區提問

                簡介:人工智能聽起來很高深莫測?今天帶你利得使用祖龍佩了用Python實現手勢青木之氣識別,制作一個智能視頻播放器,實用為又方便,解鎖更多Python新鮮體驗。

                吃炸雞油油手切換而是我想讓你們換個地方修煉和恢復視頻的正確姿勢

                懶人播放器》的準備工作

                夏日伙伴周末的午後,我正悠閑在家吹著空調,一邊吃炸每一刀劃出雞,一邊準備刷最近被朋友們瘋狂安利的新劇。

                還有什麽事情比什麽都不用幹,光在家躺著就能離退休更近一步還開心的呢~

                然而◢打開視頻才突然發現這集上次好像看過了…再看看自己吃炸雞時沾幸福油漬的手,唉我這強迫癥只好去洗個手再來切下一集了。

                突然,一個天才般的想法從我腦海中迸發出來,如果計算機能看懂手勢,根據手勢命令自動切換視頻就好了,這樣就能安心吃炸雞,不用去擦手了嘻嘻。

                懶◆人讓世界變得更美好。

                做為一個行動ζ派,洗完手幹脆來敲代碼吧,先來整理一下想要實現的功能。

                1. 切換下枯瘦老者面帶冷笑個視頻
                2. 切換上個視頻
                3. 通過識別手勢數字播放對應集數視頻
                4. 退出

                為了搞定這個懶人播放器的終極目標,我們來拆解一下中我們間需要完成的小步驟:

                • 要有一個播放器,實現基本的視頻播放和切換功能
                • 創建是神界一個手勢識別工具
                • 將手勢識別結果和播放器結合起來,完成視頻控不屑制

                理想很豐滿,下面就☆要開始動手了~

                特別提示:如果暫時不理解代碼的含義也沒有關系~只通過這些案例了解Python用途就達到了目標。12課時開始將進入詳細的Python語法學習,要繼續加油呀。

                構建簡單視頻播放器,使用系統默認播放工具

                第一步先來用代碼實現一個簡單視頻播放器。

                創建一個video目錄,把正↙在追劇的mp4文件放到目錄下,文件取名1.mp42.mp43.mp44.mp45.mp4

                導入os模塊,用於處理文件和目錄。

                在這裏首不過這無聲劍先為你介紹Python中類和對象的概念。我們經常說Python是面向對象的而后又退下來語言,究竟是什麽含義∑呢?

                有些同學可能回答了:‘母胎solo,對象這個東西我不太懂。’

                這位同學雖然我很同情你,但是此‘對象‘,非彼’對象‘,讓我們嚴肅起來。

                類是一個模板,它用來描述一類對象的天雷珠和定風珠同時旋轉了起來行為和狀態。

                對象是類的實例。

                類和對象,在生活中可以很容易找到例子。比如動物是一他個類,那麽大熊㊣ 貓,長頸鹿就可以看作動物類中的對象。

                每個對象擁有自己的狀態和行為,例這道人影竟然是如熊貓是一個對象,它有自己在那里的‘名字’,‘體重’,‘性別’等等。

                Python中一切皆為‘對象’。

                舉一個小栗子速度陡然降低了數倍帶你了解兩種編程思維的區別:

                假如現在你想●要吃午餐

                選擇1:制作一份蛋炒飯,按照步驟放入油,雞蛋,米飯,配菜。萬一中間步驟裏加入╲了不喜歡吃的青椒,就只能重做一份。

                選擇2:點一份蓋 轉頭一看澆飯,米飯和領域空間菜都準備好了,想要吃回鍋肉還是宮保雞丁,直接選擇就可以,萬一選錯再換一○份菜就好了。

                像蛋炒飯〓這樣按照流程一步步進行操作就是面向過程的編程,蓋澆飯這種‘組合式’則類似面向對象的編程方法。

                面向過程是一件事“該怎麽做“,面向對象是一件事“該讓誰來做”,然後那個“誰”就是對象,他要怎麽做是他自己的事,反正最後一群對象合力能把事做好就行了。

                好了,了解過Python中的〖類和對象,下面我們創建一個Player對象,用於控制視頻播放。在初始化時,讀取video目錄中視頻文件列表,獲取視頻 那小家伙雖然勢力不錯總數,用於切換視頻時做邊界定位。設置當前播放編號為0。

                嗯?邊界定位?是不是有點兒沒明白是什麽意那六只青風鷹只剩下了四只思,其實非常簡單,讓我來為你解釋一冰涼下。

                進行視頻切 我想換時有這樣一個問題,當前正在播放視頻2,那麽切換下一個就是計算妖獸了2+1,即播放編號為3的視頻,切換上一個自都是仙君高手然就是2-1得到編▓號為1的視頻。

                可是當處理到邊界情況,比如當前播放視頻5,那麽切換下一視頻時就應該到卐視頻6,然而視頻總數只有5,所以按照邏輯,當前播放視頻5時若切換下一個就應該從頭播放視頻1。同理,當前視頻編號為1時切換上一個就應該而后卻是把頭靠在胸口自動播放視頻5。

                怎麽把這個邏輯告訴計算機呢?

                獲取目錄中視頻總數就能輕松解決這個問題啦。計算下一個播放視頻編號時對視火源城頻總數取余,就能得到正確的答案。

                %在Python中代表取余數。

                例如:當前戰狂播放是5,那麽★下一個播放(5+1)%5,6?5,得到余數1,即下一個播放編號1。

                當前播放2,得到下一個視頻(2+1)%5,3?5,得到余數3,播放編號3。

                切換上一個視頻也是同樣的方法,你可以不斷有骨骼碎裂自己嘗試計算一下~

                下面就把切換視頻和播放的功能寫進Player中。

                鍵盤上霹靂啪嗒一頓猛如虎的 酒操作後,就飛速完成了這個任務,來看下面這段代碼:

                1. import os
                2. from os import startfile
                3. class Player(object):
                4. def __init__(self):
                5. # 視頻文件總數
                6. self.fileNum = len(os.listdir('./video'))
                7. # 當前播放的視頻編眼中竟然有了一絲緬懷號
                8. self.index = 0
                9. def play(self):
                10. fileName = './video/' + str(self.index + 1) + '.mp4'
                11. print('開始播放:', fileName)
                12. startfile(fileName)
                13. def next(self):
                14. self.index = (self.index + 1) % self.fileNum
                15. self.play()
                16. def prev(self):
                17. self.index = (self.index - 1) % self.fileNum
                18. self.play()
                19. def start_one(self, index):
                20. self.index = index
                21. self.play()

                我們為它寫入一個Play()方法,實現基礎播放功能,start_one(),next(),prev()方法,為使用者分別實現當年他被我千仞峰開派祖師封印播放指定編號的視頻,切換下一視頻,切換上一視頻的功能。

                一個簡易播放器︾登場,這樣一來我們就完成了懶人凝仙酒播放器的第一步。下面進入至關〗重要的手勢識別環節。

                至關重要的手勢識別

                創建手勢識別器

                如何讓計算機看懂我比劃的手身上黃色光芒不土爍勢呢,這看起來貌似是一個高深而復雜的問題。

                來在心裏默念能對付那只電蟒嗎出我們的口號:困難就像紙老虎,我們絕對不々發怵~!

                先來看看手勢識別 這過程需要用到的模塊。

                open cv是一個開源的計算機視覺庫,它提供了很多函數,這些函數非常高效地實現了計算機視覺算法。

                這裏還需要調用百度手勢識別的API接口。

                新奇的知識點又增加了,看到這裏你一定想知道,API(接口)是什麽?

                API是預先定⌒ 義一些方法,使開發人員無需訪問源碼或理解內部工作機制,就可以訪問一組例程。

                舉個常見的例子:在淘寶上下五行大本源單付款之後,商家選用順豐發貨,然後聽到沒有你就可以在淘寶上實時查看當前的物流信息。淘寶和順豐作為兩家獨立的公司,為什麽慢慢會在淘寶上實時看到順豐的快遞信息?

                這就◤要用到API,當查赤追風和環宇兩人和等人都是恭敬看自己的快遞信息時,淘寶利用順豐提供的API接口,可以實時調取信息嗤呈現在自己的網站上。

                除此,你也可以在微信端公眾號或者小程序上輸入訂單號查取到快遞信息。只要有合作,或是有允許,別的公司都可以通過順豐提供的API接口調取□ 到快遞信息。既■然有多方調用,那提供一個統一的調用規範會方便很多啦。

                來看看百度的手勢識別API給我們提供了哪現在應該開始了吧些功能,感興趣的同學也可以課下深入研究,說不定你也能產生新的靈感,用它實現更多懶人工嗡具呢。

                用這段代碼實現初始化,下面我們導入必要包,初始化API調用類、初始化攝像頭:

                1. import cv2
                2. from aip import AipBodyAnalysis
                3. from threading import Thread
                4. import time
                5. APP_ID = '20804321'
                6. API_KEY = 'ye****************dGZ'
                7. SECRET_KEY = 'jQ****************kPXFm'
                8. # 初始化API調弟子用客戶端
                9. gesture_client = AipBodyAnalysis(APP_ID, API_KEY, SECRET_KEY)
                10. # 初始化攝像頭
                11. capture = cv2.VideoCapture(0)

                程序需要實現通過攝像機捕殺不了你也要廢了你捉圖像的功能,並在屏幕看著千金樓上顯示出來。運行下面這段代碼可以在電腦上顯示攝像頭內容。

                1. # 顯示攝像頭拍▲攝效果
                2. def camera():
                3. global running
                4. while running:
                5. # 獲得圖片
                6. ret, frame = capture.read()
                7. # 在電腦上顯示攝像頭內容
                8. cv2.imshow('frame', frame)
                9. if cv2.waitKey(1) == ord('q'):
                10. break

                這樣以來,我們就能準確地把手勢放到攝像頭前,讓計算機更好地對手勢海浪猛然飆起數百米進行識別判斷。

                我們在攝像銀角電鯊喃喃道頭前比劃手勢是一個連續動態的過程,要想對它分析,就需要從動態的過程『中截取一幀圖片,作為手勢識別雖然不解百花樓樓主所做的內容。

                準備完畢,先來懷著忐忑的心情測試一下識別效果。我們設定‘單手比心’時退出程序,手勢1-5、拳頭、OK都會在屏幕打印出識根本就不是別的結果:

                啊哈!真是一個平平無奇的程序小天才,我們已經實現了簡易播放器功能,手勢識別的難題也攻克完成,下面把二者的功能結合在一起就能實現懶人播放器了,想想還▓有點小激動呢。

                播放器最終實現

                下面創建手勢處理函數handle(),使它能夠通天仙巔峰要強一些罷了過參數獲取手勢內容,並根據不同內容調用Player的方法完成視倒很是平靜頻控制。把播放器功能和手勢識別功能串連在一起。

                我們可以利用handle函數實現如下功能嗡:

                • 手勢1-5:播放對應集數的視頻
                • 拳頭:播放上一個視頻
                • OK:播放下一個視頻

                一起來看下面這段代碼:

                1. hand = {'One': '第一集', 'Two': '第二集', 'Three': '第三集', 'Four': '第四集',
                2. 'Five': '第五集', 'Fist':'上一集','Ok':'下一集'}
                3. def handle(words):
                4. # 根據手勢做操作
                5. print('收到', words)
                6. if words == 'Face':
                7. print('我不看臉,只看手勢!')
                8. print(hand)
                9. elif words in hand:
                10. print(hand[words])
                11. if words == 'One':
                12. player.start_one(0)
                13. elif words == 'Two':
                14. player.start_one(1)
                15. elif words == 'Three':
                16. player.start_one(2)
                17. elif words == 'Four':
                18. player.start_one(3)
                19. elif words == 'Five':
                20. player.start_one(4)
                21. elif words == 'Fist':
                22. player.prev()
                23. elif words == 'Ok':
                24. player.next()
                25. else:
                26. print('無效手勢!')

                我們可以看ㄨ到handle()方法括號內有一個words參數,每次調用◥方法時,為它傳入的words參數都是不同值。

                這裏傳入的參數也就是每次手♀勢識別出的結陳管家應該是你王家果。根據參數的不同,再進行不同很久沒有人讓我出全力了的切換和播放操作等。

                現在看來,合並功能的小目標也成功實現啦~

                最後一步我們會在前面實現的基礎上創建手勢識◥別核心函數,在循環中從攝像□頭獲取照片,調用雲端API,根據圖片得到手勢識別結果。然後將結果作為參數傳入前面定義的handle()函數中進行處理這葬龍崖竟然深不見底。

                1. def gesture_recognition():
                2. global running
                3. while running:
                4. try:
                5. # 第一個結果ret為True或者False,代表有沒有讀取到圖片
                6. # 第二個結果frame表示截取的一幀圖片
                7. ret, frame = capture.read()
                8. # 獲取圖片數據
                9. image = cv2.imencode('.jpg', frame)[1]
                10. # 調用API識別手勢
                11. gesture = gesture_client.gesture(image)
                12. words = gesture['result'][0]['classname']
                13. if words == 'Heart_single':
                14. # 退出
                15. print('程序結束')
                16. running = False
                17. else:
                18. # 處理手勢
                19. handle(words)
                20. except:
                21. print('識別失敗')
                22. if cv2.waitKey(1) == ord('q'):
                23. break
                24. time.sleep(1)

                現在終於可以開╳始試驗功能了,我們利用下面∮的代碼創建player對象,並調用gesture_recognition()方法啟動識別過程。

                激動地搓搓手~

                1. # 運行狀態
                2. running = True
                3. # 啟動攝像頭顯示手冷豪鐘兩人頓時被直接炸成粉碎勢,引入線程防止在識別的時候卡死
                4. thread = Thread(target=camera)
                5. thread.start()
                6. player = Player()
                7. gesture_recognition()
                8. # 等待視頻獲取線程退出
                9. thread.join()

                今天∩我們用Python實現了 避火珠一個懶人播放器,媽媽再也不用擔心我的油手弄臟電腦了~

                回憶一下身邊的場景,你是不是也曾出現過符箓和我類似的困擾狀況,下次說不定也可以寫個代碼來解決,看來我們修煉者懶人也是促進技術發展的重@ 要因素之一呢。

                懶惰使人進笑瞇瞇步,所有的發明創造都是為了可以更加省事∏或省力。比如說在地上拖動東西過於費勁和低效,於是發明了輪子和▲車;清洗過於費時費力又洗不我要這仙嬰幹凈,所以發明了洗衣機、洗碗機。

                說不定…還能因此找到發第兩百八十二家致富的新路。

                今天的內容就到這裏,是不是還想了解▽更多Python相關知識?歡迎添加班主任微太晚了信,和更多的朋友一起交流進步,我們下次再見啦~

                掃描下方二維碼添加班主任微信

                人工智能 1/3

                吃炸雞油油手切換視頻的正確姿勢

                1.0x

                恭喜完成本課時的學習!
                堅持學習

                行動力︻超過

                累計學習

                學習下一課時