javacv開發(fā)詳解之調(diào)用本機攝像頭視頻
前言
javacv開發(fā)包是用于支持java多媒體開發(fā)的一套開發(fā)包,可以適用于本地多媒體(音視頻)調(diào)用以及音視頻,圖片等文件后期操作(圖片修改,音視頻解碼剪輯等等功能),這里只使用最簡單的本地攝像頭調(diào)用來演示一下javacv的基礎(chǔ)功能
重要:
建議使用最新javaCV1.5版本,該版本已解決更早版本中已發(fā)現(xiàn)的大部分bug
javacv系列文章使用6個jar包:
javacv.jar,javacpp.jar,ffmpeg.jar,ffmpeg-系統(tǒng)平臺.jar,opencv.jar,opencv-系統(tǒng)平臺.jar。
其中ffmpeg-系統(tǒng)平臺.jar,opencv-系統(tǒng)平臺.jar中的系統(tǒng)平臺根據(jù)開發(fā)環(huán)境或者測試部署環(huán)境自行更改為對應(yīng)的jar包,比如windows7 64位系統(tǒng)替換為ffmpeg-x86-x64.jar
為什么要這樣做:因為ffmpeg-系統(tǒng)平臺.jar中存放的是c/c++本地so/dll庫,而ffmpeg.jar就是使用javacpp封裝的對應(yīng)本地庫java接口的實現(xiàn),而javacpp就是基于jni的一個功能性封裝包,方便實現(xiàn)jni,javacv.jar就是對9個視覺庫進行了二次封裝,但是實現(xiàn)的功能有限,所以建議新手先熟悉openCV和ffmpeg這兩個C/C++庫的API后再來看javaCV思路就會很清晰了。
須知:
javacv系列文章默認音視頻處理使用ffmpeg,圖像處理使用opencv,攝像頭抓取使用opencv
javacv官方github維護地址:https://github.com/bytedeco/javacv
依賴配置說明
(注意:從其他地方下載的依賴包請積極開心的替換為官方j(luò)ar包和博主提供jar包;如果使用其他jar包版本而導(dǎo)致出錯,不要急著找博主問為啥會報錯,先把jar包替換了再試試看)
maven和gradle方式如果想要減小依賴包大小,則需要手動進行排除不需要的平臺依賴即可
1.使用maven添加依賴
<dependency> <groupId>org.bytedeco</groupId> <artifactId>javacv-platform</artifactId> <version>1.4.4</version> </dependency>
2.使用gradle添加依賴
dependencies {
compile group: 'org.bytedeco', name: 'javacv-platform', version: '1.4.4'
}
3.使用本地jar包方式
最新版實在太大,需要下載全量包的請到官方github.com/bytedeco/javacv下載
建議使用maven或gradle方式構(gòu)建項目。
jar包使用須知:
1、windows x64平臺用到的opencv依賴:opencv.jar;oepncv-windows-x86_64.jar(其他平臺替換為對應(yīng)的jar包即可)
2、蘋果mac需要opencv-macosx-x86_64.jar
3、linux平臺需要:opencv-linux-x86_64.jar4、安卓平臺arm架構(gòu)的需要opencv-android-arm.jar ,基于x86的需要opencv-android-x86.jar
為什么不需要安裝opencv?
從javacv0.8開始,已經(jīng)不需要本地安裝opencv,直接通過引用opencv對應(yīng)的系統(tǒng)平臺的引用包即可。
(比如oepncv-windows-x86_64.jar就是典型的64位windows環(huán)境依賴包)
獲取攝像頭視頻
最終調(diào)用的攝像頭實時視頻圖像界面:

預(yù)覽本機攝像頭視頻圖像的簡單實現(xiàn)(由于之前csdn的注釋被屏蔽,重新精簡優(yōu)化了代碼):
package cc.eguid.javacv;
import javax.swing.JFrame;
import org.bytedeco.javacv.CanvasFrame;
import org.bytedeco.javacv.OpenCVFrameConverter;
import org.bytedeco.javacv.FrameGrabber.Exception;
import org.bytedeco.javacv.OpenCVFrameGrabber;
/**
* 調(diào)用本地攝像頭窗口視頻
* @author eguid
* @date 2016年6月13日
* @since javacv1.2
*/
public class JavavcCameraTest{
public static void main(String[] args) throws Exception, InterruptedException{
OpenCVFrameGrabber grabber = new OpenCVFrameGrabber(0);//新建opencv抓取器,一般的電腦和移動端設(shè)備中攝像頭默認序號是0,不排除其他情況
grabber.start();//開始獲取攝像頭數(shù)據(jù)
CanvasFrame canvas = new CanvasFrame("攝像頭預(yù)覽");//新建一個預(yù)覽窗口
canvas.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//窗口是否關(guān)閉
while(canvas.isDisplayable()){
/*獲取攝像頭圖像并在窗口中顯示,這里Frame frame=grabber.grab()得到是解碼后的視頻圖像*/
canvas.showImage(grabber.grab());
}
grabber.close();//停止抓取
}
}
是不是很簡單,原本很復(fù)雜的流媒體操作,javaCV能夠幫助我們快速實現(xiàn)。
以上就是javacv開發(fā)詳解之調(diào)用本機攝像頭視頻的詳細內(nèi)容,更多關(guān)于javacv調(diào)用本機攝像頭的資料請關(guān)注腳本之家其它相關(guān)文章!
- 詳解Java 微服務(wù)架構(gòu)
- 了解java架構(gòu)之微服務(wù)架構(gòu)—雪崩效應(yīng)
- java各種類型對象占用內(nèi)存情況分析
- Java基于IDEA實現(xiàn)http編程的示例代碼
- 教你用Java驗證服務(wù)器登錄系統(tǒng)
- Java中用POI實現(xiàn)將數(shù)據(jù)導(dǎo)出到Excel
- javaCV開發(fā)詳解之收流器實現(xiàn)
- javaCV開發(fā)詳解之推流器和錄制器的實現(xiàn)
- JavaWeb實戰(zhàn)之開發(fā)網(wǎng)上購物系統(tǒng)(超詳細)
- JavaAgent的簡單例子
- JAVA后端應(yīng)該學(xué)什么技術(shù)
- Java從單體架構(gòu)升級到微服務(wù)要注意的一些問題
相關(guān)文章
Spring+Vue整合UEditor富文本實現(xiàn)圖片附件上傳的方法
這篇文章主要介紹了Spring+Vue整合UEditor富文本實現(xiàn)圖片附件上傳的方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07
Java注解的Retention和RetentionPolicy實例分析
這篇文章主要介紹了Java注解的Retention和RetentionPolicy,結(jié)合實例形式分析了Java注解Retention和RetentionPolicy的基本功能及使用方法,需要的朋友可以參考下2019-09-09
IDEA Java win10環(huán)境配置的圖文教程
這篇文章主要介紹了IDEA Java win10環(huán)境配置,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-07-07
Java String字符串和Unicode字符相互轉(zhuǎn)換代碼詳解
這篇文章主要介紹了Java String字符串和Unicode字符相互轉(zhuǎn)換代碼,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-05-05
idea啟動多個服務(wù)不顯示Services或者RunDashboard窗口的處理方法
這篇文章主要介紹了idea啟動多個服務(wù)不顯示Services或者RunDashboard窗口,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-03-03

