2013-11-25 219 views
13

我正在製作一個機器人,它上面會有一個網絡攝像頭來提供一些簡單的對象檢測。現在,我想簡單地將視頻流傳輸到託管在機器人上的網頁,並能夠從其他設備上查看它。我已經用Python編寫了一個簡單的測試腳本(我最終將轉向C++,這是我的選擇語言),它可以從我的網絡攝像頭獲取流,然後從那裏做任何我需要的東西。然後,問題是我無法在應用程序運行時將視頻寫入文件,它僅在我退出腳本後才寫入文件。我已經有一個網絡服務器在運行,並且我可以用HTML編寫基本代碼來承載來自文件的視頻,並且所有這些都可以工作。如何將openCV視頻流式傳輸到HTML網頁?

總結: Python和/或C++中的openCV2能夠使用openCV直播視頻嗎? 如果沒有,你會推薦什麼樣的庫,我嘗試將一個CV捕獲對象或Mat對象寫入一個流,然後我可以把它放在一個網頁上? 在HTML中,標記是一個好主意,可以將視頻與視頻進行比較?

非常感謝您的建議,我可以使用所有的指針*我可以得到!

如果您需要澄清/代碼張貼/解釋比我給出的更多,請問,我會這麼做!

+0

您是否評論過github上提供的任何JavaScript圖像/視頻工具? CamanJS,Clmtrackr,JS Feat ..可能將矩陣從opencv移植到JS?機器人上的處理器是什麼--Rasberry pi,Beaglebone,Intel Edison或更好的東西?也許主板具有全功能的圖形卡(真正快速處理幀率...)? – zipzit

+0

嗨,先生!你是如何解決這個問題的,我也有同樣的問題。謝謝! –

+0

@BahramdunAdil,技術已經發生了變化...我相信我們現在使用的是OpenCV3,HTTP流和相關協議已經走過了很長的路。我沒有一個解決方案可以滿足您的需求,但是我建議您嘗試一個現有的流媒體視頻框架,例如rtmp流媒體。祝你好運! – PyroAVR

回答

1

嘗試閱讀thisthis

所以基本上你必須使用OpenCV捕獲幀並將它們打包成符合流協議的特定格式,然後從你的服務器使用HTML5將它放在頁面上。您可能需要使用VLC或FFMepg來打包您的cv :: Mat。希望這會有所幫助。

+0

謝謝,我會試試看。我在一個嵌入式平臺(beaglebone)上運行,所以我們將看到如何。我會及時向大家發佈! – PyroAVR

+2

你是否設法解決了這個問題? –

2

流幀的問題了OpenCV的和Python在下列線程得到解決: Pipe raw OpenCV images to FFmpeg

這並沒有爲我工作,但他們聲稱這爲他們做。

它在我的情況下不工作的原因似乎是,對於某些輸出幀,額外的字節被添加或丟失,位於capture.py中的輸出到stdout和FFMPEG的輸入之間。因此,字節數不對應於幀數。我不確定爲什麼會出現這種情況。我使用Windows 7.

我會好奇聽到你的經驗,如果你試試這個。我也嘗試使用cv2修改capture.py版本,並因相同原因失敗。

0

在實驗室條件下你發送完整的圖像

你似乎是在實驗室條件下,所以是一個簡單的,但可用的解決方案,使用的WebSockets只是流PNG在Base64編碼。在客戶端(網絡瀏覽器),您只需接收base64映像並將其直接加載到<img>src中。它適用於實驗室場景,雖然速度很慢。

相關問題