Java调起手机电脑摄像头

一、直接上代码

要导入的maven

     <!-- java调用摄像头 -->
        <!-- https://mvnrepository.com/artifact/org.bytedeco/javacv-platform -->
        <dependency>
            <groupId>org.bytedeco</groupId>
            <artifactId>javacv-platform</artifactId>
            <version>1.4.1</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.bytedeco.javacpp-presets/opencv-platform -->
        <dependency>
            <groupId>org.bytedeco.javacpp-presets</groupId>
            <artifactId>opencv-platform</artifactId>
            <version>3.4.1-1.4.1</version>
        </dependency>

        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>
    @Test
    public void testCamera() throws InterruptedException, FrameGrabber.Exception {
        OpenCVFrameGrabber grabber = new OpenCVFrameGrabber(0);
        grabber.start();   //开始获取摄像头数据
        CanvasFrame canvas = new CanvasFrame("摄像头");//新建一个窗口
        canvas.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        canvas.setAlwaysOnTop(true);
        while (true) {
            if (!canvas.isDisplayable()) {//窗口是否关闭
                grabber.stop();//停止抓取
                System.exit(-1);//退出
            }

            Frame frame = grabber.grab();

            canvas.showImage(frame);//获取摄像头图像并放到窗口上显示, 这里的Frame frame=grabber.grab(); frame是一帧视频图像
            Thread.sleep(50);//50毫秒刷新一次图像
        }
    }

    @Test
    public void testCamera1() throws FrameGrabber.Exception, InterruptedException {
        VideoInputFrameGrabber grabber = VideoInputFrameGrabber.createDefault(0);
        grabber.start();
        CanvasFrame canvasFrame = new CanvasFrame("摄像头");
        canvasFrame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        canvasFrame.setAlwaysOnTop(true);
        while (true) {
            if (!canvasFrame.isDisplayable()) {
                grabber.stop();
                System.exit(-1);
            }
            Frame frame = grabber.grab();
            canvasFrame.showImage(frame);
            Thread.sleep(30);
        }
    }

热门文章

暂无图片
编程学习 ·

通过组键扫描使得Spring管理类的对象

通过组件扫描使得Spring管理类的对象。 如果User类需要使用Spring框架管理,必须声明User类所在的包,然后再用测试类中的AnnotationConfigApplicationContext的构造方法中将包名作为参数():import org.springframework.context.annotation.AnnotationConfigApplicationContex…
暂无图片
编程学习 ·

selenium 点击按钮,打开新标签页后,无法定位新标签页的元素

使用selenium爬取页面时,在弹出浏览器界面上我们明明看到已经自动到达新标签页,却无法定位新标签页的元素原因:实际上程序并没有随浏览器上所看的标签页改变而该改变,也就是说我们在浏览器上看到已经到达标签2,实际上程序默认的还是标签1解决方案:browser.switch_to_wind…
暂无图片
编程学习 ·

centos下安装nginx

1,环境介绍 本文安装nginx版本为1.12.2 系统版本为centos6.9 2,软件下载 链接:https://pan.baidu.com/s/1RVhCS1-WcXXaGlnAVQPH-g 提取码:od5x 3,安装nginx 1,编译安装需要安装一些兼容包 yum install pcre-devel openssl-devel gcc-c++ htop iotop iftop nmap nc telnet…
暂无图片
编程学习 ·

训练数据转换为PASCAL VOC2007

数据 我们已有标注数据个数为json保存的,现在训练代码使用的标注格式为PASCAL VOC2007,为了不修改代码,将数据转换到PASCAL VOC2007的xml格式。 转换代码 import os import json from lxml.etree import Element, SubElement, tostring, ElementTree from xml.dom import mi…
暂无图片
编程学习 ·

希尔排序的原理,图解,java代码实现

希尔排序希尔排序就是一种插入排序,又称“缩小增量排序”,是插入排序算法的一种更高效的改进版本。排序原理排序原理:选定一个增长量h,按照曾长亮h作为分组的依据,对数据进行分组。 对分好组的每一组数据完成插入排序。 减少增长量,最小减为1,重复第二步操作。举例排序过…
暂无图片
编程学习 ·

评估指标:精确率,召回率,F1_score,ROC,AUC

分类算法评估标准详解 分类准确度并不能够评估所有的场景,展示的结果也比较片面,这时候就需要其他的评估方法来进行测量评估。 所以接下来介绍一些其他的评估标准,将从以下5个方面来介绍: 混淆矩阵 精准率和召回率 F1 Score ROC曲线 AUC 一、混淆矩阵(Confusion Matrix) …
暂无图片
编程学习 ·

kuangbin专题8 生成树 次小生成树部分 HDU4081/UVA10600/UVA10462

前言 本来壮志凌云的想都做完 发现我在做梦。。。 朱刘算法太难了(自己太懒发现性价比比较低之后就没做而且算法介绍也太难懂了好几个关键词含义都不给简直简直太难了我枯 HDU4081 Qin Shi Huang’s National Road System 题意:给你一个图的各个点的坐标 再给你每个点的权值…
暂无图片
编程学习 ·

微信公众号自定义菜单栏绑定关联小程序

日期:2020/7/2 10:02 原文链接: http://note.youdao.com/noteshare?id=a5b5529c7bb1f385fa5453d2a338dbd1&sub=B015901C99BF4BEF93CA3F3E1F8AA7B4 注意事项: 微信公众号必须已经有了绑定关联的小程序,如微信公众号还没有关联小程序,请去微信公众平台进行绑定 情况一:…
暂无图片
编程学习 ·

requests实现token鉴权-学习笔记总结

import requests# 第一步 登录 获取token值 login_url = "http://api.lemonban.com/futureloan/member/login" # 登录地址 login_data = {"mobile_phone":"18311783673","pwd":"1234567890"} # 登录数据 hea…
暂无图片
编程学习 ·

java大牛总结的 面试题

下面一起来看 208 道面试题,具体的内容。一、Java 基础1.JDK 和 JRE 有什么区别?2.== 和 equals 的区别是什么?3.两个对象的 hashCode()相同,则 equals()也一定为 true,对吗?4.final 在 java 中有什么作用?5.java 中的 Math.round(-1.5) 等于多少?6.String 属于基础的数…
暂无图片
编程学习 ·

1. M601 ADC 的使用

1 ADC 相关的数据结构和 API1.1 概论OpenCPU 支持两个模拟输入引脚可用于检测外部电压。请参照管脚定义和ADC 硬件特性。 可以检测的电压范围可分四挡,分别是 1V,2V,3V。本文介绍的数据结构和 API 可以参考 SDK 中 Zyf_adc.h 文件。1.2 用法直接调用 ZYF_AdcRead 接口即可读…
暂无图片
编程学习 ·

父子项目构建 & module间类调用

IDEA创建父子项目1.springBoot父子项目https://www.cnblogs.com/MaxElephant/p/8205234.html2.Maven or 普通项目 父子项目https://blog.csdn.net/u014307520/article/details/80692702IDEAmodule之间 类 相互调用https://blog.csdn.net/yhblog/article/details/83793602
暂无图片
编程学习 ·

提高网站排名的9种内容策略

如果您是一家企业公司的老板,那么您就会知道营销品牌的重要性。成功的市场营销不仅可以留住您的老客户和带来新客户,还可以为公司带来更多的销售和利润。因此,您可能还知道网站或博客上的内容是营销的一个极其重要的方面,并且您可能会不断努力以创建完美的内容。这样做的思…
暂无图片
编程学习 ·

Nginx在Windows和linux安装教程及使用方法

1.Nginx的概述2.代理和反向代理一、正向代理(Forward Proxy)一般情况下,如果没有特别说明,代理技术默认说的是正向代理技术。关于正向代理的概念如下: 正 向代理(forward)是一个位于客户端【用户A】和原始服务器(origin server)【服务器B】之间的服务器【代理服务器Z】,为了…
暂无图片
编程学习 ·

为什么选择Docker?一文带你鸟瞰容器生态系统,零基础入门Docker

启程对于像容器这类平台级别的技术,通常涉及的知识范围会很广,相关的软件,解决方案也会很多,初学者往往容易迷失。那怎么办呢?我们可以从生活经验中寻找答案。当我们去陌生城市旅游想了解一下这个城市,一 般我们会怎么做?我想大部分,人应该会打开手机看一下这个城市的地…