二话不说,直接上代码


/** @Author 张泰清* @Description //人脸识别* @Date 2019/12/19 13:14* @Param* @return**/import org.opencv.core.Point;
import org.opencv.core.*;
import org.opencv.imgcodecs.Imgcodecs;
import org.opencv.imgproc.Imgproc;
import org.opencv.objdetect.CascadeClassifier;
import org.opencv.objdetect.HOGDescriptor;
import org.opencv.videoio.VideoCapture;
import org.opencv.videoio.Videoio;import javax.swing.*;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.util.Timer;
import java.util.TimerTask;public class CaptureBasic extends JPanel {private BufferedImage mImg;static int imgName=1;static boolean isFace=false;private BufferedImage mat2BI(Mat mat){int dataSize =mat.cols()*mat.rows()*(int)mat.elemSize();byte[] data=new byte[dataSize];mat.get(0, 0,data);int type=mat.channels()==1?BufferedImage.TYPE_BYTE_GRAY:BufferedImage.TYPE_3BYTE_BGR;if(type==BufferedImage.TYPE_3BYTE_BGR){for(int i=0;i<dataSize;i+=3){byte blue=data[i+0];data[i+0]=data[i+2];data[i+2]=blue;}}BufferedImage image=new BufferedImage(mat.cols(),mat.rows(),type);image.getRaster().setDataElements(0, 0, mat.cols(), mat.rows(), data);return image;}public void paintComponent(Graphics g){if(mImg!=null){g.drawImage(mImg, 0, 0, mImg.getWidth(),mImg.getHeight(),this);}}public static void main(String[] args) {try{System.loadLibrary(Core.NATIVE_LIBRARY_NAME);Mat capImg=new Mat();//VideoCapture capture=new VideoCapture(0);VideoCapture capture=new VideoCapture("http://192.168.1.204:81/videostream.cgi");int height = (int)capture.get(Videoio.CAP_PROP_FRAME_HEIGHT);int width = (int)capture.get(Videoio.CAP_PROP_FRAME_WIDTH);if(height==0||width==0){throw new Exception("camera not found!");}JFrame frame=new JFrame("毕业实习--人脸识别");frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);CaptureBasic1 panel=new CaptureBasic1();frame.setContentPane(panel);frame.setVisible(true);frame.setSize(width+frame.getInsets().left+frame.getInsets().right,height+frame.getInsets().top+frame.getInsets().bottom);Mat temp=new Mat();frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);Timer timer=new Timer();timer.schedule(new TimerTask() {@Overridepublic void run() {capture.read(capImg);Imgproc.cvtColor(capImg, temp, Imgproc.COLOR_RGB2GRAY);try {panel.mImg=panel.mat2BI(detectFace(capImg));} catch (Exception e) {e.printStackTrace();}panel.repaint();if (isFace){Imgcodecs.imwrite("opencv"+imgName+".png", capImg);imgName++;}isFace=false;}}, 10,10);} catch (Exception e) {e.printStackTrace();}}/*** opencv实现人脸识别* @param img*/public static Mat detectFace(Mat img) throws Exception {// 从配置文件lbpcascade_frontalface.xml中创建一个人脸识别器,该文件位于opencv安装目录中CascadeClassifier faceDetector = new CascadeClassifier("D:\\Program Files\\OPENCV\\opencv\\sources\\data\\haarcascades\\haarcascade_frontalface_alt.xml");// 在图片中检测人脸MatOfRect faceDetections = new MatOfRect();faceDetector.detectMultiScale(img, faceDetections);//System.out.println(String.format("Detected %s faces", faceDetections.toArray().length));Rect[] rects = faceDetections.toArray();if(rects != null && rects.length >= 1){System.out.println("发现人脸"+imgName);isFace=true;for (Rect rect : rects) {Imgproc.rectangle(img, new Point(rect.x, rect.y), new Point(rect.x + rect.width, rect.y + rect.height),new Scalar(0, 0, 255), 2);}}return img;}
}

使用该程序前需要做以下准备工作:

  1. 下载安装opencv
  2. 把opencv安装目录里的/build/java/下的jar包导入项目
  3. 把opencv安装目录里的/build/java/x64下的.dll文件复制到jdk安装目录的bin目录下
//调用本机默认摄像头
VideoCapture capture=new VideoCapture(0);
//调用ip摄像头
VideoCapture capture=new VideoCapture("http://192.168.1.204:81/videostream.cgi");
//必须把haarcascade_frontalface_alt.xml换成你自己的opencv安装目录里的文件
CascadeClassifier faceDetector = new CascadeClassifier("D:\\Program Files\\OPENCV\\opencv\\sources\\data\\haarcascades\\haarcascade_frontalface_alt.xml");

至此,程序已经能够正常运行了,在摄像头画面中出现人脸,则会自动拍照存储到类路径下!

下图是本人在学校图书馆的实验结果:

opencv调用ip摄像头实现人脸识别自动拍照相关推荐

  1. python调用摄像头人脸识别代码_Python使用 opencv调用笔记本摄像头进行人脸识别...

    首先需要导入opencv库pip install  -i https://pypi.tuna.tsinghua.edu.cn/simple/   opencv-python 上代码#万码学堂Pytho ...

  2. python+opencv调用ip摄像头(基于RTSP实现)

    python+opencv调用ip摄像头(基于RTSP实现) 采用RTSP(Real Time Streaming Protocol),RFC2326,实时流传输协议,RTSP是TCP/IP协议体系中 ...

  3. OpenCV调用手机摄像头与人脸检测

    文章目录 一.OpenCV机器视觉环境搭建 1. OpenCV下载 2. OpenCV安装 3. 安装测试 二.OpenCV调用摄像头及人脸检测 1. 调用电脑摄像头 2. 调用手机摄像头及人脸检测 ...

  4. 使用opencv调用IP摄像头APP

    使用opencv调用手机摄像头 大致分为三步 在手机上下载应用IP摄像头 IP摄像头图标 2. 确保你的电脑和手机在同一个局域网中 如果你的电脑没有无线网卡,则用你的手机给电脑开热点(确保可以通过US ...

  5. 调用远程摄像头进行人脸识别_人脸识别技术植入手机APP

    随着物联网技术的日益成熟,我们看到已经有很多APP用到了人脸识别技术,特别是金融和互联网领域的应用纷纷加入了人脸识别.表示,人脸识别技术基于人的脸部特征信息进行身份识别,为互联网金融等行业解决在线多维 ...

  6. 调用远程摄像头进行人脸识别_工地安全:AI如何实现安全帽检测与人脸识别?...

    安全生产一直是施工生产中很重要的一部分,只有保障了员工的安全,才能保证企业的利益.安全帽作为保护.防护的重要防范手段,一直是各大企业要求员工佩戴的,可还是发生了各种由于未佩戴安全帽导致的安全事故. 通 ...

  7. 用OpenCV调用IP摄像头(python版)

    操作系统: Windows10用到的软件: 1.anaconda3 2.OpenCV 3 等等硬件: EasyN摄像头一个(必须为IPcamera) 问题综述 最近在学习OpenCV,想要通过摄像头采 ...

  8. Python+OpenCV 调用手机摄像头并实现人脸识别

    文章内容: 1.windows 环境下安装 OpenCV 机器视觉环境搭建: 2.基于通过 Python+OpenCV调用手机摄像头并实现人脸检测识别. 目录 1 实验环境 2 实验准备 2.1 下载 ...

  9. 基于python调用摄像头进行人脸识别,支持多张人脸同时识别

    介绍 调用摄像头进行人脸识别, 支持多张人脸同时识别; 摄像头人脸录入 请不要离摄像头过近, 人脸超出摄像头范围时会有 "OUT OF RANGE" 提醒 提取特征建立人脸数据库 ...

最新文章

  1. 人工智能科普|自然语言处理(NLP)
  2. checkbox的全选中,取消全选中
  3. 带AI无人车上云驾校,不出门练遍各大城市道路,华南理工大学团队拿下“互联网+”大赛金奖...
  4. mysql 对库中表授权_对mysql数据库的授权和使用AND案例
  5. maven配置tomcat7
  6. android 视频开发sd卡,Android开发之SD卡文件操作分析
  7. Taro+react开发(25)三元
  8. [Kesci] 预测分析 · 客户购买预测(AUC评估要使用predict_proba)
  9. 2019年终总结-如果这是一场电影
  10. go语言中关于文件的操作+工作目录的拼接
  11. 使用_beginthread创建线程
  12. 2023年东南大学机械工程考研考情与难度、参考书上岸前辈备考经验
  13. 我做了STM32MP1实战教程
  14. Linux align函数,linux内核中ALIGN解析(示例代码)
  15. 李彦宏对话IMF总裁拉加德:缓解B端焦虑,要看AI这道主菜味道如何
  16. php 百度地图根据经纬度获取地址,百度地图 根据经纬度获取地址
  17. WSL2配置docker和PHP
  18. php yii2 ddd,Xunsearch SDK for PHP/yii2
  19. 企业微信三方开发:注册企业微信服务商
  20. Codeforces Round #739 (Div. 3) ABCDEF1F2 解题思路

热门文章

  1. web前端高级工程师,面试题
  2. 怎么用计算机上摄像头拍照,用电脑上的摄像头拍照的方法步骤
  3. 6nm工艺的微观神话,于毫厘间雕刻5G的“神笔马良”
  4. Nginx实战学习之负载均衡
  5. 苏州文正学院计算机张晓青,北流市地图(广西政区图地图)
  6. es6 Reflect对象详解
  7. 2007年。。。。。
  8. PostgreSQL备份工具pg_dump和pg_dumpall
  9. 公有云和私有云的对比和转换
  10. npm 与 package.json 快速入门教程