1. 程式人生 > 其它 >音視訊處理、影象處理、影象識別和字元識別全能庫JavaCV完整教程(包含完整JavaCV入門、JavaCV實戰、ffmpeg、opencv和tesserac教程)

音視訊處理、影象處理、影象識別和字元識別全能庫JavaCV完整教程(包含完整JavaCV入門、JavaCV實戰、ffmpeg、opencv和tesserac教程)

前言

一個老生常談的問題,JavaCV可以做什麼?

  1. 首先是音視訊處理,編解碼,裝封裝,只要ffmpeg可以的javacv就可以
  2. 再者是影象處理和影象識別,可以藉助opencv影象檢測識別和tessert字元識別,他們也沒有什麼不同,只是javacv通過jni讓它們跨平臺了而已,簡化了opencv和tessert環境配置,更加容易上手。
  3. 矩陣計算,深度學習(deeplearning)等方面的也不在話下

JavaCV完整教程

從入門到實戰再到進階底層ffmpeg、opencv和tesserac等庫。為了便於不同基礎的開發者掌握JavaCV,比如有些開發者有opencv或者ffmpeg的使用基礎,很多基礎內容可以跳過,博主將整個JavaCV分成五個JavaCV專欄用於闡述JavaCV基礎知識、JavaCV實戰教程以及ffmpeg、opencv和tesserac,方便開發者分別訂閱自己所需要的專欄。當然了,大部分Java開發者對於音視訊和影象處理、識別這塊完全是零基礎入門,所以,博主也推出了JavaCV五合一專欄,便於零基礎的開發者們更快的入門。
所有內容和擴充套件補充知識:



國產化適配(龍芯架構)補充文章:
如何在龍芯架構和國產化作業系統平臺上執行javacv

各個專欄內容概述

JavaCV入門教程

《JavaCV入門教程》詳細介紹了音視訊流媒體、影象處理識別等技術的前置知識,JavaCV的基礎結構明細以及JavaCV各個結構的說明和用法。通過配合JavaCV實戰教程中的例項帶領大家全面理解JavaCV。

JavaCV實戰教程

《JavaCV實戰教程》

相比於《JavaCV入門教程》的理論知識講解,更注重以翔實的實際案例,帶領大家一步一步領略JavaCV強大的裝置音視訊採集(攝像頭、麥克風、桌面螢幕)、音視訊處理、拉流/推流、視訊錄製、hls切片、mp4切片、截圖、icon圖示製作、編解碼、視訊濾鏡特效、GPU硬體加速等實戰技術使用。

不僅如此,使用JavaCV可以快速通過sdk接入網路攝像頭視訊(海康、大華等宇視攝像機)並推流到我們指定的流媒體服務或者,或者也可以利用JavaCV實現自己的流媒體服務(例如:EasyMedia)實現websocket-flv,http-flv,hls等協議的實時視訊/錄影回放視訊轉發。

除此以外,利用JavaCV視訊濾鏡也可以快速實現各種字元疊加,圖片疊加,畫中畫、多視訊合流等特效。

JavaCV涉及非常豐富的實戰案例內容,更多內容不詳細介紹,敬請檢視 《JavaCV實戰教程》,領略全面的流媒體音視訊開發技術。

JavaCV進階FFmpeg音視訊

《JavaCV進階FFmpeg音視訊》相比於使用JavaCV封裝好的類庫,相當於直接呼叫ffmpeg的api,相當於提供了ffmpeg的java版本api,比JavaCV封裝庫更加自由,適合想要深入瞭解ffmpeg音視訊開發技術的開發者,以及覺得JavaCV不太能滿足自己的需要,想要自己定製開發更加複雜和可控的音視訊技術,它更加貼近底層,需要開發者具有全面的ffmpeg基礎知識才能上手。

JavaCV進階opencv影象處理

《JavaCV進階opencv影象處理》專欄提供了JavaCV方式呼叫opencv底層庫的方法。
主要講解了基於opencv技術的javacv影象處理、人臉檢測、人臉訓練、人臉識別、二維碼檢測、識別等實際案例,帶領大家快速上手javaCV影象處理/識別技術。

注意:因為opencv本身也提供java的api,所以要注意它跟javacv的api是不相通的。如果使用javacv中的其他類庫,則必須配合使用JavaCV方式的opencv。

JavaCV進階tesserac字元識別

《JavaCV進階tesserac字元識別》詳細講解了JavaCV使用google的tesserac實現檢測攝像頭或者視訊中字元並實現字元識別。

JavaCV五合一教程合輯

《JavaCV五合一教程合輯》包含上述五個專欄全部內容,相比全部單獨訂閱JavaCV五個單獨的專欄價格更加優惠。

JavaCV所有專欄目錄一覽

JavaCV入門教程目錄

JavaCV入門指南:序章(看完本章後,不想看原理的小夥伴可直接跳轉到《快速上手篇》)
JavaCV入門指南:呼叫FFmpeg原生API和JavaCV是如何封裝了FFmpeg的音視訊操作
JavaCV入門指南:呼叫opencv原生API和JavaCV是如何封裝了opencv的影象處理操作
JavaCV入門指南:幀抓取器(FrameGrabber)的原理與應用
JavaCV入門指南:幀錄製器/推流器(FrameRecorder)的原理與應用
JavaCV入門指南:幀過濾器(FrameFilter)的原理與應用
JavaCV入門指南:FrameConverter轉換工具類及CanvasFrame影象預覽工具類(完結篇)

《快速上手篇》(為了區別,單獨劃分):
JavaCV入門指南之快速上手篇:快速上手視訊拉流、推流、錄製檔案、錄屏、截圖和編解碼複用解複用等常用音視訊處理操作

javaCV實戰教程目錄

javacv開發詳解之1:呼叫本機攝像頭視訊
javaCV開發詳解之2:推流器實現,推本地攝像頭視訊到流媒體伺服器以及攝像頭錄製視訊功能實現(基於javaCV-FFMPEG、javaCV-openCV)
javaCV開發詳解之3:收流器實現,錄製流媒體伺服器的rtsp/rtmp視訊檔案(基於javaCV-FFMPEG)
javaCV開發詳解之4:轉流器實現(也可作為本地收流器、推流器,新增新增圖片及文字水印,視訊影象幀儲存),實現rtsp/rtmp/本地檔案轉發到rtmp流媒體伺服器(基於javaCV-FFMPEG)
javaCV開發詳解之5:錄製音訊(錄製麥克風)到本地檔案/流媒體伺服器(基於javax.sound、javaCV-FFMPEG)
javaCV開發詳解之6:本地音訊(話筒裝置)和視訊(攝像頭)抓取、混合並推送(錄製)到伺服器(本地)
javaCV開發詳解之7:讓音訊轉換更加簡單,實現通用音訊編碼格式轉換、重取樣等音訊引數的轉換功能(以pcm16le編碼的wav轉mp3為例)
javaCV開發詳解之8:轉封裝在rtsp轉rtmp流中的應用(無須轉碼,更低的資源消耗,更好的效能,更低延遲)
javaCV開發詳解之9:基於gdigrab的windows螢幕畫面抓取/採集(基於javacv的螢幕截圖、錄屏功能)

javaCV開發詳解之9補充篇1:基於avfoundation的蘋果Mac和ios獲取螢幕畫面及錄屏/截圖以及攝像頭畫面和音訊取樣獲取實現
javaCV開發詳解之9補充篇2:基於x11grab的linux螢幕畫面抓取/採集(linux錄屏功能)
java原生實現螢幕裝置遍歷和螢幕採集(捕獲)功能

javaCV開發詳解之10:基於dshow呼叫windows攝像頭視訊和音訊,想要獲取螢幕畫面首選gdigrab
javaCV開發詳解之11:視訊檔案轉gif動態圖片實現,也支援攝像機、桌面螢幕、流媒體等視訊源轉gif

javaCV開發詳解之11補充篇1:螢幕錄製gif動態圖,使用windows桌面螢幕畫面錄製成gif動態圖片,支援桌面任意取域生成gif,可擴充套件支援MacOS/安卓/linux等平臺,可擴充套件支援apng動態圖片
javacv開發詳解之11補充篇2:使用批量多張圖片製作gif動態圖

javaCV開發詳解之12:視訊轉apng動態圖片實現,支援透明通道,支援攝像機、桌面螢幕、流媒體等視訊源轉apng動態圖

javacv開發詳解之12補充篇:使用批量多張圖片製作apng動態圖

javaCV開發詳解之13:使用FFmpeg Filter過濾器處理音視訊
javaCV開發詳解之14:音訊重取樣
javaCV開發詳解之15:視訊幀畫素格式轉換
javaCV開發詳解之16:使用一張圖片推流和一張圖片錄製成視訊檔案
javaCV開發詳解之17:GIF和APNG動態圖片推流和錄製成視訊檔案(以gif轉mp4為例)
javaCV開發詳解之18:音視訊轉碼(音訊編解碼和視訊編解碼)
JavaCV開發詳解之19:如何開啟GPU硬體加速,使用JavaCV進行音視訊的硬解碼和硬編碼
JavaCV開發詳解之20:如何使用JavaCV製作ico圖示,圖片和視訊生成ico圖示,視訊流錄製ico圖示
JavaCV開發詳解之21:如何使用JavaCV接入gb28181的ps流並推流到流媒體服務和接入海康大華sdk回撥h264/hevc裸流

JavaCV開發詳解之21補充篇1:使用javacv讀取大華攝像頭sdk回撥視訊裸流並解析

JavaCV開發詳解之22:flv,live_flv格式說明,http-flv拉流和http-flv推流及rtmp拉流和rtmp推流全面分析和開發實戰
JavaCV開發詳解之23:hls視訊錄製,m3u8切片錄製和fmp4切片錄製詳解,以拉流rtmp錄製hls切片為例

javacv開發詳解之23補充篇1:hls切片錄製,rtsp拉流錄製生成hls切片,m3u8清單/ts切片錄製詳解,解決hls_time無效問題
javacv開發詳解之23補充篇2:hls切片轉封裝錄製,無需轉碼進行ts切片,m3u8清單/ts切片錄製
JavaCV開發詳解之23補充篇3:hls切片錄製,自動根據日期時間格式生成切片ts檔案和目錄

JavaCV開發詳解之24:使用javacv錄製dash視訊分片,mpeg-dash視訊錄製和製作
JavaCV開發詳解之25:使用javacv儲存raw視訊畫素格式(yuv或者rgb),並使用ffplay播放raw
JavaCV開發詳解之26:使用javacv對視訊進行連續截圖和覆蓋截圖,支援png,jpg,bmp等格式快速連續截圖,適用於視訊快照
JavaCV開發詳解之27:使用javacv把視訊切割成多個視訊分片檔案,以mp4為例,把視訊切割成MP4分片檔案
JavaCV開發詳解之28:如何使用javacv進行多圖推流和多圖合成視訊檔案,以批量jpg圖片推流rtmp和jpg合成flv視訊檔案為例
JavaCV開發詳解之29:使用javacv將多個視訊拼接合成單個視訊,多個音訊拼接合成單個音訊

JavaCV開發詳解之27補充篇1:使用javacv把音視訊切割成多個音訊分片檔案,以mp3為例,把視訊切割成MP3分片檔案

JavaCV開發詳解之30:如何使用javacv拉取rtsp視訊流,rtsp解複用器詳解。如何把rtsp調教的服服帖帖,讓rtsp拉流不再丟包
JavaCV開發詳解之31:如何計算pts/dts時間戳,在視訊轉碼和轉複用中如何自行計算pts/dts時間戳

javacv開發詳解補充篇:解決轉流後視訊畫面快進慢放,時間跳動過大,監控視訊時間戳重新計算pts和dts

JavaCV開發詳解之32:使用filter濾鏡實現中文字元疊加
JavaCV開發詳解之33:使用filter濾鏡實現動態日期時間疊加
JavaCV開發詳解之34:使用filter濾鏡實現無限迴圈滾動字元疊加,跑馬燈特效
JavaCV開發詳解之35:使用filter濾鏡實現畫中畫,以螢幕畫面疊加攝像頭畫面為例

JavaCV實戰教程補充內容目錄

音視訊編解碼問題:javaCV如何快速進行音訊預處理和解複用編解碼(基於javaCV-FFMPEG)
音視訊編解碼問題:16/24/32位位音訊byte[]轉換為小端序short[],int[],以byte[]轉short[]為例
實現給圖片增加圖片水印或者文字水印(也支援視訊影象幀新增水印)
流媒體直播實時視訊延遲時間排查和剖析
JavaCV精簡依賴包:如何只依賴本地平臺所需的最小依賴包

javacv進階ffmpeg系列目錄

javacpp-FFmpeg系列之1:視訊拉流解碼成YUVJ420P,並儲存為jpg圖片
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影象處理之2:實時視訊新增圖片水印,實現不同大小圖片疊加,影象透明度控制
javacv影象處理3:使用opencv原生方法遍歷攝像頭裝置及呼叫(方便多攝像頭遍歷及呼叫,相比javacv更快的攝像頭讀取速度和效率,方便讀取後的影象處理)
javacv影象處理系列:國內車輛牌照檢測識別系統(萬份測試準確率99.7%以上)

javacv人臉檢測識別目錄

opencv人臉檢測識別:

JavaCV進階opencv影象檢測識別:攝像頭畫面人臉檢測
JavaCV進階opencv影象檢測識別:ffmpeg視訊影象畫面人臉檢測
JavaCV進階opencv影象處理:批量人臉影象分類訓練
JavaCV進階opencv影象處理:攝像頭影象人臉識別

二維碼識別目錄

二維碼識別 JavaCV進階opencv影象處理:掃描並識別攝像頭中的二維碼
JavaCV進階opencv影象處理:10行程式碼快速實現掃描識別圖片中的二維碼
JavaCV進階opencv影象處理:掃描並識別視訊中的二維碼

javacv進階tesserac文字識別系列目錄

javaCV文字識別之1:基於google的tesserac ocr識別圖片中的文字,跨平臺支援英文中文簡體繁體等各種字元識別

javaCV文字識別之2:視訊文字識別和視訊提取字幕文字字元

eguid原創文章,如未說明出處和作者名,禁止轉載。 博主主更新部落格為:eguid.blog.csdn.net。其他平臺的小夥伴如需聯絡博主,請轉到csdn,謝謝。 歡迎大家積極開心的加入流媒體討論群:社群一群:770640961,社群二群:608423839,社群三群:556722677,社群四群:689672017