java swing 人脸签到系统 ----- 调用 opencv 多线程

简介: java swing 人脸签到系统 ----- 调用 opencv 多线程

java 源代码地址 code aliyun

https://code.aliyun.com/734449600/swingFaceCheckIn.git

软件功能展示


项目 设计的 技术问题总结

工作 进程 以及 渲染 进程 如何分离


人脸识别 sdk 的集成与调用

java 调用 opencv

特征比对

打包 exe 方法

java 多线程

java 调用 opencv 源代码 展示

调用代码

开始签到Button.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                new Thread(() -> readImage()).start();
            }
        });

工作 代码

// 获取 图片的 io 工作进程
    public void readImage() {
        VideoLabel.setText("请等待打开摄像头");
        capture.open(0);
        openVideo = 0;
        // 设置帧率
        capture.set(Videoio.CAP_PROP_FPS, 30);
        boolean grab = capture.grab();
        if (!grab) {
            return;
        }
        int take_count = 0;
        while (true) {
            Mat capImg = new Mat();
            BufferedImage tempImage;
            if (openVideo == -1) {
                capture.release();
                break;
            }
            capture.read(capImg);
            tempImage = CvFunc.MatToBufferedImage(capImg);
            if (tempImage != null) {
                updateVideoLabel(new ImageIcon(tempImage));
                take_count += 1;
                if (take_count == 20) {
                    take_count = 0;
                    new Thread(() -> {
                        String[] res = studentInfo.compareImage(tempImage);
                        updateCompareRes(res);
                        studentInfo.Checkin(res[0]);
                        String spring_str = studentInfo.GetSpringStuStr();
                        String absent_str = studentInfo.GetAbsentStuStr();
                        updateStudentList(spring_str, absent_str);
                    }).start();
                }
            }
            try {
                sleep(50);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
// 页面渲染进程
    public void updateCompareRes(String[] s_list) {
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                compareRes.setText(s_list[0]);
                compareVal.setText(s_list[1]);
            }
        });
    }
// 页面渲染进程
    public void updateVideoLabel(ImageIcon imageIcon) {
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                VideoLabel.setText("");
                VideoLabel.setIcon(imageIcon);
            }
        });
    }
目录
打赏
0
0
0
0
3
分享
相关文章
基于OpenCV的车牌识别系统源码分享
基于OpenCV的车牌识别系统主要利用图像边缘和车牌颜色定位车牌,再利用OpenCV的SVM识别具体字符,从而达到车牌识别的效果。
39 4
基于OpenCV的车牌识别系统源码分享
基于计算机视觉(opencv)的运动计数(运动辅助)系统-源码+注释+报告
基于计算机视觉(opencv)的运动计数(运动辅助)系统-源码+注释+报告
117 3
Ubuntu系统下编译OpenCV4.8源码
通过上述步骤,你可以在Ubuntu系统上成功编译并安装OpenCV 4.8。这种方法不仅使你能够定制OpenCV的功能,还可以优化性能以满足特定需求。确保按照每一步进行操作,以避免常见的编译问题。
80 43
Ubuntu系统下编译OpenCV4.8源码
通过上述步骤,你可以在Ubuntu系统上成功编译并安装OpenCV 4.8。这种方法不仅使你能够定制OpenCV的功能,还可以优化性能以满足特定需求。确保按照每一步进行操作,以避免常见的编译问题。
72 30
使用 OpenCV 和 Python 轻松实现人脸检测
本文介绍如何使用OpenCV和Python实现人脸检测。首先,确保安装了OpenCV库并加载预训练的Haar特征模型。接着,通过读取图像或视频帧,将其转换为灰度图并使用`detectMultiScale`方法进行人脸检测。检测到的人脸用矩形框标出并显示。优化方法包括调整参数、多尺度检测及使用更先进模型。人脸检测是计算机视觉的基础技术,具有广泛应用前景。
62 10
Ubuntu系统下编译OpenCV4.8源码
通过上述步骤,你可以在Ubuntu系统上成功编译并安装OpenCV 4.8。这种方法不仅使你能够定制OpenCV的功能,还可以优化性能以满足特定需求。确保按照每一步进行操作,以避免常见的编译问题。
37 12
|
2月前
|
漂亮不是梦!Java Swing美化攻略
Java Swing 是一个为 Java 设计的 GUI 工具包,提供文本框、按钮等组件。尽管其外观可定制,通过 Look and Feel(LAF)机制改变应用风格,如 Darcula 和 FlatLaf,但现已淡出主流视野,主要应用于 IDE 领域,如 IntelliJ IDEA 和 Eclipse。相比其他 GUI 框架,Swing 的发展前景有限。
85 1
Ubuntu系统编译OpenCV4.8源码
【10月更文挑战第17天】只要三步即可搞定,第一步是下载指定版本的源码包;第二步是安装OpenCV4.8编译需要的编译器与第三方库支持;第三步就是编译OpenCV源码包生成安装文件并安装。
基于Python_opencv人脸录入、识别系统(应用dlib机器学习库)(下)
基于Python_opencv人脸录入、识别系统(应用dlib机器学习库)(下)
63 2
基于Python_opencv人脸录入、识别系统(应用dlib机器学习库)(上)
基于Python_opencv人脸录入、识别系统(应用dlib机器学习库)(上)
92 1