Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >opencv使用中出现的问题

opencv使用中出现的问题

作者头像
用户5640963
发布于 2020-10-26 09:20:24
发布于 2020-10-26 09:20:24
1K00
代码可运行
举报
文章被收录于专栏:卯金刀GG卯金刀GG
运行总次数:0
代码可运行

最近项目遇到一个问题,springboot2在打包过程中出现的问题;

1、引用本地的jar包,怎么打包到项目;

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
pom.xml 配置
   dependencies标签配置
   <!--打包本地jar包-->
   <dependency>
       <groupId>org.opencv</groupId>
       <artifactId>opencv</artifactId>
       <version>0.0.1</version>
       <scope>system</scope>
       <systemPath>${project.basedir}/src/main/resources/lib/opencv-440.jar</systemPath>
   </dependency>
   
   其中,version为必填,尝试过省略,报错;
   plugins标签配置
   <plugin>
       <groupId>org.apache.maven.plugins</groupId>
       <artifactId>maven-compiler-plugin</artifactId>
       <version>3.8.1</version>
       <configuration>
           <source>1.8</source>
           <target>1.8</target>
           <encoding>UTF-8</encoding>
           <compilerArguments>
               <!-- 打包本地jar包 -->
               <extdirs>${project.basedir}/src/main/resources/lib</extdirs>
           </compilerArguments>
       </configuration>
   </plugin>
   <plugin>
       <groupId>org.springframework.boot</groupId>
       <artifactId>spring-boot-maven-plugin</artifactId>
       <configuration>
           <includeSystemScope>true</includeSystemScope>
       </configuration>
   </plugin>
   
   
   resources标签 配置
   <resources>
       <resource>
           <directory>${project.basedir}/src/main/resources</directory>
           <includes>
               <include>lib/*.jar</include>
           </includes>
       </resource>
       <resource>
           <directory>${project.basedir}/src/main/resources</directory>
           <includes>
               <include>lib/*.dll</include>
           </includes>
       </resource>
       <resource>
           <directory>${project.basedir}/src/main/resources</directory>
           <includes>
               <include>*.yml</include>
           </includes>
       </resource>
       <resource>
           <directory>${project.basedir}/src/main/resources</directory>
           <includes>
               <include>*/*.xml</include>
           </includes>
       </resource>
       <resource>
           <directory>${project.basedir}/src/main/resources</directory>
           <includes>
               <include>*/*.json</include>
           </includes>
       </resource>
   </resources>

2、opencv使用人脸识别过程中,需要引入haarcascade_frontalface_alt2.xml文件,如果放在项目的lib文件中,在打包的过程中能够打到包里,但是在动态引用的过程中,由于jar包中文件的引用出现混乱路径的情况,找不到文件。找到一个折中的办法,haarcascade_frontalface_alt2.xml文件放到固定目录下,再引用的时候,只需要读取固定的路径即可。

yml文件配置 path: resourcePath: C:\haarcascade_frontalface_alt2.xml # 人脸识别的xml配置文件

NativeConfig.java类

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package com.hake.smart.configration;

import com.hake.smart.ymlconfig.YmlConfigUtil;
import lombok.extern.slf4j.Slf4j;
import org.opencv.core.*;
import org.opencv.imgcodecs.Imgcodecs;
import org.opencv.imgproc.Imgproc;
import org.opencv.objdetect.CascadeClassifier;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.util.ClassUtils;

import javax.annotation.Resource;
import java.util.Arrays;

/**
 * @Author: Liu Yue
 * @Descripition:
 * @Date; Create in 2020/8/25 15:59
 **/
@Configuration
@Slf4j
public class NativeConfig {

    @Resource
    private YmlConfigUtil ymlConfigUtil;

    @Value("${path.resourcePath}")
    private static String resourcePath;

    @Value(value = "${path.resourcePath}")
    private void setResourcePath(String  resourcePath){
        this.resourcePath = resourcePath ;
    }
    @Bean
    public NativeConfig initFrontalface(){
        System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
        log.error("路径:{}",resourcePath);

        faceDetector = new CascadeClassifier(resourcePath);
        return new NativeConfig();
    }
    /**
     * 测试OpenCV是否能运行:需要自行修改图片位置
     * @throws Exception 测试是否成功
     */
    static CascadeClassifier faceDetector;

/*    static {
        System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
        //String url = "C:/hake/gitremote/hakesmartacceptback/target/classes/lib/haarcascade_frontalface_alt2.xml";
        //ClassPathResource("lib/haarcascade_frontalface_alt2.xml");
        *//*ClassPathResource resource = new ClassPathResource("lib/haarcascade_frontalface_alt2.xml");
        String path = resource.getPath();
        path = basepath + path;*//*
        URL urlClass = ClassLoader.getSystemResource("lib/haarcascade_frontalface_alt2.xml");
        String path = urlClass.getPath();
        log.error("路径:{}",path);
        path = path.substring(1,path.length());
        faceDetector = new CascadeClassifier(path);
    }*/

    private Mat conv_Mat(String img_1) {
        Mat image0 = Imgcodecs.imread(img_1);

        Mat image = new Mat();
        //灰度转换
        Imgproc.cvtColor(image0, image, Imgproc.COLOR_BGR2GRAY);

        MatOfRect faceDetections = new MatOfRect();
        //探测人脸
        faceDetector.detectMultiScale(image, faceDetections);

        // rect中是人脸图片的范围
        for (Rect rect : faceDetections.toArray()) {
            //切割rect人脸
            Mat mat = new Mat(image, rect);
            return mat;
        }
        return null;
    }
    //比较图片相似度
    public Boolean compare_image(String img_1, String img_2) {
        Mat mat_1 = conv_Mat(img_1);
        Mat mat_2 = conv_Mat(img_2);

        Mat hist_1 = new Mat();
        Mat hist_2 = new Mat();

        //颜色范围
        MatOfFloat ranges = new MatOfFloat(0f, 256f);
        //直方图大小, 越大匹配越精确 (越慢)
        MatOfInt histSize = new MatOfInt(1000);

        Imgproc.calcHist(Arrays.asList(mat_1), new MatOfInt(0), new Mat(), hist_1, histSize, ranges);
        Imgproc.calcHist(Arrays.asList(mat_2), new MatOfInt(0), new Mat(), hist_2, histSize, ranges);

        // CORREL 相关系数
        double res = Imgproc.compareHist(hist_1, hist_2, Imgproc.CV_COMP_CORREL);
        log.info("OPENCV人脸相似度:{}",res);
        int lifePhotostandard = ymlConfigUtil.getLifePhotostandard();
        log.info("相识度标准:{}",lifePhotostandard);
        boolean bl = res * 100 > lifePhotostandard ? true:false;

        return bl;
    }
}

每天提高一点点

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Java + opencv 实现人脸识别,图片人脸识别、视频人脸识别、摄像头实时人脸识别
opencv官网下载windows安装包 https://opencv.org/releases/ 选择最新版4.1.1 下载完成后是一个opencv-4.1.1-vc14_vc15.exe,双击安装。
全栈程序员站长
2022/08/30
22.7K0
Java + opencv 实现人脸识别,图片人脸识别、视频人脸识别、摄像头实时人脸识别
Android NDK OpenCV级联方式实时进行人脸检测
前面的文章《Android通过OpenCV和TesserartOCR实时进行识别》我们已经搭好一个利用NDK方式实时处理摄像头数据的程序了,今天我们就在看看OpenCV中通过级联方式实时进行人脸检测。
Vaccae
2019/07/30
1.5K0
Android NDK OpenCV级联方式实时进行人脸检测
【OpenCV人脸识别入门教程之二】人脸检测
本篇文章主要介绍了如何使用OpenCV实现人脸检测。本文不具体讲解人脸检测的原理,直接使用OpenCV实现。
全栈程序员站长
2022/06/26
8870
【OpenCV人脸识别入门教程之二】人脸检测
OpenCV4.x(C++)人脸检测(眼睛、侧脸、正脸)
OpenCV是一款广泛使用的计算机视觉库,提供了许多强大的功能,包括人脸检测和识别。人脸分类器是OpenCV中用于人脸检测的关键工具之一,能够快速准确地检测出图像中的人脸。
DS小龙哥
2024/01/12
1.8K0
OpenCV4.x(C++)人脸检测(眼睛、侧脸、正脸)
VC++中使用OpenCV进行人脸检测
对于上面的图像,如何使用OpenCV进行人脸检测呢? 使用OpenCV进行人脸检测十分简单,OpenCV官网给了一个Python人脸检测的示例程序,
ccf19881030
2024/05/24
1730
VC++中使用OpenCV进行人脸检测
人脸识别初探之人脸检测(一)
人脸识别是个说小不小的工程,在完成这个项目之前,先把人脸检测熟悉一下。人脸检测用到的函数如下:
用户9831583
2022/06/16
9.9K0
人脸识别初探之人脸检测(一)
人脸检测(一)——基于单文档的应用台程序
Opencv自带训练好的人脸模型(人脸的人眼、口等器官类似),此文基于vs2013建立应用台单文档程序,具体建立过程不予详细叙述,主要记录利用的Opencv自带的分类器和训练好的人脸模型。 一、编程前的准备 (1)Haar特征分类器 Haar特征分类器就是一个XML文件,该文件中会描述人体各个部位的Haar特征值。包括人脸、眼睛、嘴唇等等。 Haar特征分类器存放目录:OpenCV安装目录中的\data\ haarcascades目录下,例如: haarcascade_eye.xml haarcasc
小小詹同学
2018/04/13
1.4K0
人脸检测(一)——基于单文档的应用台程序
使用摄像头+JavaCV做人脸识别
上一文,我们讲到的是使用JavaCV拉取笔记本摄像头画面,这次,我们基于上一次的基础,加工人脸识别功能。
灬沙师弟
2023/09/06
1.1K0
使用摄像头+JavaCV做人脸识别
OpenCV学习入门(一):人脸检测
该文章介绍了如何使用OpenCV和CascadeClassifier类来检测人脸,并使用绿色方框标出眼睛和鼻子。该代码基于OpenCV 2.4.9,使用C++编写,并使用了CascadeClassifier类进行人脸检测。此外,还介绍了如何通过编写代码来读取视频流,并使用OpenCV库进行实时人脸检测和眼睛、鼻子的定位和标注。
用户1150922
2018/01/08
1.4K0
OpenCV学习入门(一):人脸检测
Java版人脸跟踪三部曲之三:编码实战
欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 《Java版人脸跟踪三部曲》全文链接 《极速体验》 《开发设计》 《编码实战》 本篇概览 作为《Java版人脸跟踪三部曲》系列的终篇,本文会与大家一起写出完整的人脸跟踪应用代码 前文《开发设计》中,已经对人脸跟踪的核心技术、应用主流程、异常处理等方方面面做了详细设计,建议您简单回顾一下 接下来,自顶向下,先整体设计好主框架和关键类 程序主框架和关键类 听欣宸唠叨
程序员欣宸
2022/04/13
6930
Java版人脸跟踪三部曲之三:编码实战
OpenCV进行人脸识别(Python)
https://gitee.com/mirrors/opencv/tree/4.x/data/haarcascades
码客说
2022/09/27
9540
OpenCV进行人脸识别(Python)
OpenCV开发:ubuntu18.04下交叉编译OpenCV3.4.9到ARM64位平台RK3399(aarch64-linux-)
OpenCV源码下载地址: https://opencv.org/releases/
DS小龙哥
2022/01/12
2.1K0
OpenCV开发:ubuntu18.04下交叉编译OpenCV3.4.9到ARM64位平台RK3399(aarch64-linux-)
关于OpenCV for Python入门-自带人脸检测算法比较
本来学习OpenCV的目的就是为了做人脸识别、车辆识别、人群计数等等,识别人脸首先要进行人脸检测,OpenCV中内置了Haar Cascade人脸分类器,其中包括haarcascade_frontalface_alt、haarcascade_frontalface_alt_tree、haarcascade_frontalface_alt2、haarcascade_frontalface_default这四种,本文不求甚解,只是从比对上判断一下这几种内置分类器的可用性。
python与大数据分析
2022/04/02
6950
关于OpenCV for Python入门-自带人脸检测算法比较
OpenCV专题2 - 人脸检测+自动尺寸裁剪
俗话说:不基于需求的敲代码都是耍流氓 ---- 一、人脸检测: 1.准备材料 首先需要准备人脸的训练数据,这个在官方的Github可以下载到,这里用:lbpcascade_frontalface.x
张风捷特烈
2020/04/30
2.6K1
OpenCV专题2 - 人脸检测+自动尺寸裁剪
Python中使用opencv-python进行人脸检测
之前写过一篇VC++中使用OpenCV进行人脸检测的博客。以数字图像处理中经常使用的lena图像为例,如下图所示:
ccf19881030
2024/05/24
2390
Python中使用opencv-python进行人脸检测
如何用Java实现人脸检测功能,在图片中查找人脸并标记出来?
Java是一门面向对象的编程语言,可以通过调用OpenCV库来实现人脸检测功能。OpenCV是一个开源计算机视觉库,其中包含许多用于图像处理和分析的函数和模块。下面我们将学习如何使用Java和OpenCV来实现人脸检测和标记出来。
用户1289394
2023/09/11
8950
如何用Java实现人脸检测功能,在图片中查找人脸并标记出来?
OpenCV 人脸检测级联分类器解读
1.基本概念 opencv中的人脸检测使用基于Harr的级联分类和基于LBP的级联分类。 Harr是在2001年,由Viola和Jones等人提出的,它的脸部检测的基本思想是:对于面部正面的大部分区域而言,会有眼睛所在的区域比前额和脸颊更暗,嘴巴应该比脸颊更暗等情况。和这样类似的比较大约有20个,通过这样的比较决定该区域是否为人脸。 LBP是在2006年由Ahonen等人提出的,相比于Harr,LBP有更快的速度。通过比较想读亮度直方图来确定是否为人脸。但是对于稳定性,LBP要弱于前者。 Opencv自带训练好的人脸检测模型,存储在sources/data/haarcascades文件夹和sources/data/lbpcascades文件夹下。其中几个.xml文件如下: 人脸检测器(默认):haarcascade_frontalface_default.xml 人脸检测器(快速Harr):haarcascade_frontalface_alt2.xml 人脸检测器(侧视):haarcascade_profileface.xml 眼部检测器(左眼):haarcascade_lefteye_2splits.xml 眼部检测器(右眼):haarcascade_righteye_2splits.xml 嘴部检测器:haarcascade_mcs_mouth.xml 鼻子检测器:haarcascade_mcs_nose.xml 身体检测器:haarcascade_fullbody.xml 人脸检测器(快速LBP):lbpcascade_frontalface.xml
chaibubble
2022/05/07
4360
OpenCV下载、安装和使用
当下,涉及人工智能和计算机视觉之类的算法多用python或matlab实现,这个系列基于C++解析OpenCV的常用算法使用及基本原理。
流川疯
2024/09/09
3530
OpenCV下载、安装和使用
OpenCV人脸检测 人脸打码
.xml文件路径为本地绝对路径,应用代码时需要修改。 代码如下: #include "opencv2/objdetect/objdetect.hpp" #include "opencv2/highgui/highgui.hpp" #include "opencv2/imgproc/imgproc.hpp" #include <iostream> #include <stdio.h> using namespace std; using namespace cv; void detectAndDisp
chaibubble
2022/05/07
2.3K0
OpenCV人脸检测 人脸打码
人脸检测到识别OpenCV源码测试
samples/cpp/tutorial_code/objectDetection/objectDetection.cpp
用户9831583
2022/06/16
1K0
相关推荐
Java + opencv 实现人脸识别,图片人脸识别、视频人脸识别、摄像头实时人脸识别
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验