要時常嘗試有趣的東西,一切都是爲了想使用百度平臺的人臉檢測的接口,因此來學習一下這個新的東西,例子百度一大把,主要是想把遇到的坑列一列,以便後來者更快速的查找錯誤。
- 相信搜過javaCV的同學都會看到這篇文章javacv開發詳解之1:調用本機攝像頭視頻(建議使用javaCV最新版本),我也一樣,在學習這個知識之前,就蒐集了一大堆資料,文檔,文檔看起來比較苦澀,所以,相信大多數人都希望能有個demo入門,因此,我的是基於上那個博主,在實踐中,不斷改進和完善。
項目準備
1.我的是myeclipse,jdk1.8【要注意jdk的版本,低於1.7的會報錯】
2.maven項目
3.我GitHub地址
開始
1、引用依賴
<!-- javacv依賴包 -->
<dependency>
<groupId>org.bytedeco</groupId>
<artifactId>javacv</artifactId>
<version>1.4.1</version>
</dependency>
<dependency>
<groupId>org.bytedeco.javacpp-presets</groupId>
<artifactId>opencv-platform</artifactId>
<version>3.4.1-1.4.1</version>
</dependency>
創建java文件,複製粘貼
/**
*
*/
package test;
import javax.swing.JFrame;
import org.bytedeco.javacv.CanvasFrame;
import org.bytedeco.javacv.FrameGrabber.Exception;
import org.bytedeco.javacv.OpenCVFrameGrabber;
/**
* @author zwh_182
* @email
* @createTime 2018-11-13上午9:33:51
*/
public class Test {
/**
* 方法作用:調用windows平臺的攝像頭窗口視頻 創建時間:2018-11-13 上午9:33:51
*
* @throws Exception
* @throws InterruptedException
*/
public static void main(String[] args) throws Exception,
InterruptedException {
OpenCVFrameGrabber grabber = new OpenCVFrameGrabber(0);
grabber.start(); // 開始獲取攝像頭數據
CanvasFrame canvas = new CanvasFrame("攝像頭");// 新建一個窗口
canvas.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
canvas.setAlwaysOnTop(true);
while (true) {
if (!canvas.isDisplayable()) {// 窗口是否關閉
grabber.stop();// 停止抓取
System.exit(2);// 退出
}
canvas.showImage(grabber.grab());// 獲取攝像頭圖像並放到窗口上顯示, 這裏的Frame
// frame=grabber.grab();
// frame是一幀視頻圖像
Thread.sleep(50);// 50毫秒刷新一次圖像
}
}
}
報這種錯的,是因爲依賴缺了
Exception in thread "main" java.lang.UnsatisfiedLinkError: no jniopencv_core in java.library.path
at java.lang.ClassLoader.loadLibrary(Unknown Source)
at java.lang.Runtime.loadLibrary0(Unknown Source)
at java.lang.System.loadLibrary(Unknown Source)
將以上兩個依賴補上即可