javacv实现人脸识别——打开摄像头

最近做一个项目,需要用到虹软的JDK实现一个人脸识别的电脑桌面应用系统。本认为是一项很简单的事情,却踩了不少的坑,特此记录一下,方便需要的兄弟借鉴。

打开摄像头是最简单的一步,也是坑最多的一步。java中打开摄像头主要有两种方式,通过两种方式:

  • JMF
  • javacv

JMF中的坑比较多,我找了很多资料,最后成功安装之后,却发现运行出错,使用不了,也不知道是哪里的原因,所以最后还是考虑用javacv来打开摄像头
首先我们先下载javacv,最重要的就是四个文件:javacppjavacvopencvopencv-windows-x86_64。把四个文件复制一份放到项目的lib文件夹中,方便管理。然后我们在intellij IDE中导入再四个库文件:File->Project Structure->Libraries->"+"
在这里插入图片描述
然后把四个库文件分别添加进来,我们导入完成之后的情况:
在这里插入图片描述
需要注意:javacv是依赖opencv库的,因此需要自行去opencv官网下载最新版的opencv并安装。图中opencv-430便是官网下载的。

我们测试一下是否成功:

import org.bytedeco.javacv.CanvasFrame;
import org.bytedeco.javacv.Frame;
import org.bytedeco.javacv.FrameGrabber;
import org.bytedeco.javacv.OpenCVFrameGrabber;
import javax.swing.*;

public class study {


    public static void main(String[] args) throws FrameGrabber.Exception, InterruptedException {

        OpenCVFrameGrabber grabber = new OpenCVFrameGrabber(0);
        grabber.start();   //开始获取摄像头数据
        CanvasFrame canvas = new CanvasFrame("人脸检测");//新建一个窗口
        canvas.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        while(true)
        {
            if(!canvas.isEnabled())
            {//窗口是否关闭
                grabber.stop();//停止抓取
                System.exit(0);//退出
            }
            Frame frame=grabber.grab();
            canvas.showImage(frame);//获取摄像头图像并放到窗口上显示, 这里的Frame frame=grabber.grab(); frame是一帧视频图像
            Thread.sleep(50);//50毫秒刷新一次图像
        }

    }

}

运行效果

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值