# javacv4axe
**Repository Path**: CaiDongyu/javacv4axe
## Basic Information
- **Project Name**: javacv4axe
- **Description**: 这是javacv的一个实践项目,跨平台(linux、windows),还可以在树梅派等板卡系统上运行,为学习和使用opencv制作视觉处理、摄像头画面处理和展示的项目提供方便。
- **Primary Language**: Java
- **License**: MIT
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 5
- **Forks**: 3
- **Created**: 2021-04-15
- **Last Updated**: 2024-07-29
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# javacv4axe
#### 介绍
这是javacv的一个实践项目,跨平台(linux、windows),还可以在树梅派等板卡系统上运行,为学习和使用opencv制作视觉处理、摄像头画面处理和展示的项目提供方便。
#### 软件架构
#### 安装教程
1. git clone 或者 下载源码到本地
2. 进入到pom.xml文件所在目录,mvn install安装到本地maven仓库
3. 在项目中添加如下maven依赖
```xml
com.javacv4axe
javacv4axe
21.3.23
org.bytedeco
javacv-platform
1.4.4
org.axe
axe
21.3.11
```
#### 使用说明
1.如果想本地Jframe预览摄像头画面
```java
import org.axe.Axe;
import org.bytedeco.javacv.CanvasFrame;
import com.javacv4axe.core.AsynchronousFrameHandler;
import com.javacv4axe.core.CammeraWatcher;
import com.javacv4axe.core.FramePack;
public class Test {
public static void main(String[] args) {
try {
Axe.init();
new CammeraWatcher(
500,500,//这两个参数是指定摄像头捕捉画面大小,可以去掉,使用摄像头默认像素大小
new AsynchronousFrameHandler() {
// 使用java的JFrame显示图像
private CanvasFrame cFrame = new CanvasFrame("预览", CanvasFrame.getDefaultGamma() / 2.2);
@Override
public void cacheFrame(FramePack framePack) {
cFrame.showImage(framePack.getEditFrame());//展示非全画幅
}
@Override
public String name() {
return "jFrame";
}
@Override
public boolean handle(FramePack framePack) {
return false;//对画面帧什么都不处理
}
}
).startWatch(0);//从设备0开始寻找摄像头
} catch (Exception e) {
e.printStackTrace();
}
}
}
```
2.如果想浏览器预览摄像头画面
```java
import org.axe.Axe;
import com.javacv4axe.core.CammeraWatcher;
import com.javacv4axe.video.HttpVideoHandler;
public class Test2 {
public static void main(String[] args) {
try {
Axe.init();
new CammeraWatcher(
500,500,
new HttpVideoHandler()//HttpVideoHandler还有另外一个带参数的构造方法,可以设置ROI尺寸
).startWatch(0);//从设备0开始寻找摄像头
} catch (Exception e) {
e.printStackTrace();
}
}
}
```
3.如果想试一下自带的人连检测
```java
import org.axe.Axe;
import org.axe.helper.ioc.BeanHelper;
import org.bytedeco.javacv.CanvasFrame;
import com.javacv4axe.core.AsynchronousFrameHandler;
import com.javacv4axe.core.CammeraWatcher;
import com.javacv4axe.core.FramePack;
import com.javacv4axe.example.FaceDetectHandler;
public class Test3 {
public static void main(String[] args) {
try {
Axe.init();
new CammeraWatcher(
500,500,
new AsynchronousFrameHandler() {
// 使用java的JFrame显示图像
private CanvasFrame cFrame = new CanvasFrame("人脸检测", CanvasFrame.getDefaultGamma() / 2.2);
@Override
public void cacheFrame(FramePack framePack) {
cFrame.showImage(framePack.getEditFrame());//展示非全画幅
}
@Override
public String name() {
return "jFrame";
}
@Override
public boolean handle(FramePack framePack) {
return false;//对画面帧都不做处理
}
},
//人脸检测器,这个人脸检测器因为是有定时任务的,所以必须从Bean容器中获取,
//那所以要配置axe.properties文件,将com.javacv4axe.example路径纳入扫描
BeanHelper.getBean(FaceDetectHandler.class)
).startWatch(0);//从设备0开始寻找摄像头
} catch (Exception e) {
e.printStackTrace();
}
}
}
```
4.如果想试一下自带的二维码识别,只需要将上面的人脸识别处理器替换成FaceDetectHandler即可
```java
BeanHelper.getBean(FaceDetectHandler.class)
```