IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> opencv for java实现人脸检测 -> 正文阅读

[人工智能]opencv for java实现人脸检测

? ? opencv是一个很优秀的图像处理框架,可以通过源码编译,让他支持java开发,这里如果在windows下开发,可以直接使用opencv-453.jar和opencv_java452.dll动态库就够了。

? ? 下面给出一个简单的代码,实现人脸检测,所谓人脸检测,就是从一个图片或者视频里面找到人脸,一般我们测试,会直接把检测到的人脸轮廓标识出来,这样就表示我们检测成功了。

? ? 代码需要使用机器学习训练好的人脸模型数据haarcasecade_frontalface_alt.xml,这个文件在很多地方都可以下载。

? ? don't talk, show me the code:

import org.opencv.core.*;
import org.opencv.imgcodecs.Imgcodecs;
import org.opencv.imgproc.Imgproc;
import org.opencv.objdetect.CascadeClassifier;
import java.net.URL;
public class FaceDetectDemo {
    public static void main(String[] args) {
        URL url = null;
        String os = System.getProperty("os.name");
        if(os.startsWith("Linux")){
            url = ClassLoader.getSystemResource("opencvlib/libopencv_java452.so");
        }else{
            url = ClassLoader.getSystemResource("opencvlib/opencv_java452.dll");
        }
        System.load(url.getPath());
        String path = "D:/java/workspaces/qrcodedemo/haarcascade_frontalface_alt.xml";
        String imgPath = "C:/Users/86159/Pictures/face.jpg";
        CascadeClassifier faceDetector = new CascadeClassifier(path);
        Mat image = Imgcodecs.imread(imgPath);
        MatOfRect faceDetections = new MatOfRect();
        faceDetector.detectMultiScale(image,faceDetections);
        System.out.println(String.format("Detected %s faces",faceDetections.toArray().length));
        for(Rect rect:faceDetections.toArray()){
            Imgproc.rectangle(image,new Point(rect.x,rect.y),new Point(rect.x+rect.width,rect.y+rect.height),new Scalar(0,255,0));
        }
        String out = "output.png";
        System.out.println(String.format("Writing %s",out));
        boolean flag = Imgcodecs.imwrite(out,image);
        System.out.println("done->"+flag);
    }
}

? ? 运行代码,会加载face.jpg,然后根据人脸检测的结果,生成一个新的图片,图片中会使用矩形表示出人脸的轮廓。

? ? 原图face.jpg:

? ? output.png

? ? 这里使用的是绿色1px的线条,可能看的不是很清晰,但是仔细看,图片中的人脸的确是被标识出来了。

? ? 这里给出的代码,没有详细说明opencv-453.jar怎么引入工程的,以及opencv_java453.dll怎么放到工程里面。?其实jar只需要加入开发工具classpath,dll文件放到合适的位置,程序能够像读文件一样读取到就可以了。

? ? 在开发中,遇到这样的问题:

/D:/java/workspaces/qrcodedemo/target/classes/haarcascade_frontalface_alt.xml
Exception in thread "main" CvException [org.opencv.core.CvException: cv::Exception: OpenCV(4.5.2) C:\Users\hlw\Desktop\opencv\opencv\modules\objdetect\src\cascadedetect.cpp:1689: error: (-215:Assertion failed) !empty() in function 'cv::CascadeClassifier::detectMultiScale'
]
	at org.opencv.objdetect.CascadeClassifier.detectMultiScale_5(Native Method)
	at org.opencv.objdetect.CascadeClassifier.detectMultiScale(CascadeClassifier.java:255)
	at FaceDetectDemo.main(FaceDetectDemo.java:23)

? ? 我的项目路径可能比较长,然后把训练模型文件haarcascade_frontalface_alt.xml放在资源文件路径下,最后加载的路径就成了:/D:/java/workspaces/qrcodedemo/target/classes/haarcascade_frontalface_alt.xml,运行程序报错,后来把这个文件提出来,放到项目路径下,运行不报错。

? ? ?有的文章说,这个训练模型文件的路径?不能带中文,我这里是路径太长。另外,我下载的模型文件好像不全,也报过这个错误。大家在编码的时候注意一下。

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-04-24 09:26:47  更:2022-04-24 09:29:49 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 9:55:04-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码