本章作為javacv技術棧系列文章彙總
前言
寫了不少關於javacv的文章,不敢說精通 ,只能說對javacv很熟悉。雖然偶爾也提交pull request做做貢獻,但是javacv包含的庫實在太多了。有些庫也不太可能每個應用場景都會用到,所以平時主要還是以ffmpeg音視訊處理為主,順帶著寫一點opencv影像處理,影像檢測識別和tessert文字識別等等。
javacv是什麼?javacv技術棧能做什麼?
一個老生常談的問題,相信大家各種搜尋引擎搜一下應該知道它能做了什麼了。
首先是音視訊處理,編解碼,裝封裝,只要ffmpeg可以的javacv就可以,他們沒有什麼不同。
再者是影像處理和影像識別,可以藉助opencv影像檢測識別和tessert字元識別,他們也沒有什麼不同,只是javacv通過jni讓它們跨平臺了而已,不需要自己再去封裝了。
剩下的包含矩陣計算,深度學習等方面的內容,瞭解不多,不多贅述。
javacv技術棧的應用場景
很多人好奇,現在javacv常被用在哪些應用場景下?
javacv跨平臺,不僅可以在windows,linux,macos等伺服器或者客戶都安機器上工作,在各種嵌入式板子上也不在話下。
嵌入式領域:
很多人把javacv用在樹莓派等等的一些基於arm晶片的板子上,外掛攝像頭或者音訊裝置就可以實現音視訊上傳,影像處理,影像識別等等操作。
流媒體:
利用javacv的流媒體優勢,可以輕鬆實現音視訊採集,推流,編解碼,裝封裝等等操作。
深度學習:
deeplearn4j為主的利用java大資料能力進行深度學習,這方面瞭解不多,但是它確實挺出名的。
人臉檢測識別:
網上搜到javacv最多的文章就是關於人臉檢測識別的了,javacv官網的首頁demo就是人臉檢測的例子,opencv能做到的它都可以。
文字識別:
利用Tesseract-OCR可以輕鬆實現字元庫訓練,字元識別。還可以藉助javacv特有的流媒體屬性和嵌入式開發特性實現攝像頭的字元識別,視訊影像的字元識別等場景。
JavaCV入門指南系列
javaCV實戰系列
-
javaCV開發詳解之2:推流器實現,推本地攝像頭視訊到流媒體伺服器以及攝像頭錄製視訊功能實現(基於javaCV-FFMPEG、javaCV-openCV)
-
javaCV開發詳解之4:轉流器實現(也可作為本地收流器、推流器,新增新增圖片及文字水印,視訊影像幀儲存),實現rtsp/rtmp/本地檔案轉發到rtmp流媒體伺服器(基於javaCV-FFMPEG)
-
javaCV開發詳解之5:錄製音訊(錄製麥克風)到本地檔案/流媒體伺服器(基於javax.sound、javaCV-FFMPEG)
-
javaCV開發詳解之7:讓音訊轉換更加簡單,實現通用音訊編碼格式轉換、重取樣等音訊引數的轉換功能(以pcm16le編碼的wav轉mp3為例)
-
javaCV開發詳解之12:視訊轉apng動態圖片實現,支援透明通道,支援攝像機、桌面螢幕、流媒體等視訊源轉apng動態圖
JavaCV及音視訊相關補充篇
-
javaCV開發詳解補充篇:基於avfoundation的蘋果Mac和ios獲取螢幕畫面及錄屏/截圖以及攝像頭畫面和音訊取樣獲取實現
-
音視訊編解碼問題:16/24/32位位音訊byte[]轉換為小端序short[],int[],以byte[]轉short[]為例
javacv進階tesserac文字識別系列
javacv進階ffmpeg系列
-
javacpp-FFmpeg系列之2:通用拉流解碼器,支援視訊拉流解碼並轉換為YUV、BGR24或RGB24等影像畫素資料
-
javacpp-FFmpeg系列之3: 影像資料轉換(BGR與BufferdImage互轉,RGB與BufferdImage互轉)
-
javacpp-FFmpeg系列補充:FFmpeg解決avformat_find_stream_info檢索時間過長問題
javacv進階opencv系列
-
javaCV影像處理之1:實時視訊新增文字水印並擷取視訊影像儲存成圖片,實現文字水印的字型、位置、大小、粗度、翻轉、平滑等操作
-
javacv影像處理3:使用opencv原生方法遍歷攝像頭裝置及呼叫(方便多攝像頭遍歷及呼叫,相比javacv更快的攝像頭讀取速度和效率,方便讀取後的影像處理)
javacv人臉檢測識別
持續更新