国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

百度人臉識(shí)別_SpringBoot整合離線SDK

這篇具有很好參考價(jià)值的文章主要介紹了百度人臉識(shí)別_SpringBoot整合離線SDK。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

一、前言

  1. 建議使用低版本 SDK : Baidu_Face_Offline_SDK_Windows_Java_6.1.3
    • 目前已知8.x版本對(duì)服務(wù)端不兼容,存在運(yùn)行過程中,第一次調(diào)用sdk能夠正常執(zhí)行,第二次時(shí)出現(xiàn)JVM異常。
    • SDK不支持多線程,一般都用于設(shè)備端,如人臉閘機(jī)上的面板機(jī)設(shè)備。
  2. 自定義庫文件路徑,與項(xiàng)目分離。
  3. 整合springBoot項(xiàng)目,實(shí)現(xiàn)啟動(dòng)初始化SDK,按需調(diào)用。

二、SDK 引入并配置

  1. 解壓程序,查看對(duì)應(yīng)操作系統(tǒng)的文件夾,將src目錄下的文件移動(dòng)到我們的項(xiàng)目中。請(qǐng)不要修改此目錄結(jié)構(gòu)。
百度人臉識(shí)別_SpringBoot整合離線SDK
  1. 給Face.java類添加注解,實(shí)現(xiàn)條件實(shí)例化。
@Slf4j
@Component
@Conditional(FaceSdkEnableCondition.class)
public class Face {
    // *******以下為人臉sdk api接口*********
  1. 修改Face.java類加載庫的方式,以及初始化。
    1. 新增 Environment 類動(dòng)態(tài)獲取庫路徑。
    2. 更換 System.load() 加載庫文件。
    3. 使用 @PostConstruct 注解,當(dāng)類對(duì)象被創(chuàng)建時(shí),自動(dòng)完成初始化工作。
    4. 使用 @PreDestroy 注解,當(dāng)類對(duì)象被銷毀時(shí),自動(dòng)完成釋放內(nèi)存工作。
// ********* 以下為系統(tǒng)加載庫文件及opencv **********
    private static String libPath;
    public Face(){ }

    @Autowired
    public Face(Environment env) {
        // 初始化libPath
        libPath = env.getProperty("face-sdk.libPath",String.class);
        // 加載dll文件
        System.load(libPath + "BaiduFaceApi.dll");
        System.load(libPath + "opencv_java320.dll");
    }

    Face api = null;

    /*  sdk初始化 */
    @PostConstruct
    public void init() {
        log.info("離線SDK開始初始化");
        log.info("SDK路徑:{}",libPath);
        api = new Face();
        int res = api.sdkInit(libPath);
        if (res != 0) {
            log.info("sdk init fail and error = {}\n", res);
            return;
        }
        log.info("離線SDK初始化完成");
    }

    /*  sdk釋放內(nèi)存 */
    @PreDestroy
    private void destroy() {
        if(api != null){
            api.sdkDestroy();
        }
        log.info("離線SDK銷毀");
    }
  1. 配置條件啟動(dòng)類相關(guān)
package cn.dyina.config;

public class FaceSdkEnableCondition implements Condition {
    @Override
    public boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata) {
        Environment env = context.getEnvironment();
        // 根據(jù)face-sdk.enable屬性來決定是否創(chuàng)建 Face bean
        return "true".equals(env.getProperty("face-sdk.enable"));
    }
}
  1. 配置路徑存放庫文件

    face-sdk:
      enable: true
      # 路徑請(qǐng)務(wù)必使用雙斜桿
      libPath: D:\\FaceLib\\
      imagesPath: D:\\FaceImages\\
    
    1. 請(qǐng)將SDK文件的所有.dll文件拷貝到 libPath 目錄下。
    2. 請(qǐng)將SDK文件下的opencv-jar、models、license文件夾拷貝到libPath 目錄下。
    3. 請(qǐng)登錄 百度智能云 控制中心,注冊(cè)并獲取離線識(shí)別SDK序列號(hào),替換license\license.key內(nèi)的序列號(hào)。
  2. 安裝maven依賴,以解決打包異常

    百度人臉識(shí)別_SpringBoot整合離線SDK

    1. 請(qǐng)修改并在項(xiàng)目終端執(zhí)行以下的命令,將opencv-jar下的opencv-320.jar依賴安裝到maven倉庫。
    mvn install:install-file -DgroupId=cn.dyina(jar包的groupId) -DartifactId=opencv-jar(jar包的artifactId) -Dversion=1.0(jar的版本號(hào)) -Dpackaging=jar -Dfile=D:\FaceLib\opencv-jar\opencv-320.jar(jar包的具體路徑)
    
    1. 添加maven依賴
    <!-- 本地依賴 opencv-jar-->
    <dependency>
        <groupId>cn.dyina</groupId>
        <artifactId>opencv-jar</artifactId>
        <version>1.0</version>
    </dependency>
    

三、項(xiàng)目使用

  1. 在SpringBoot啟動(dòng)類上,添加包掃描。
@SpringBootApplication(scanBasePackages = {"cn.dyina","com.jni"})
public class SpringBootBaiDuFaceSdkApplication {
    //...
}
  1. 編寫service、controller。(以下示例代碼僅提供參考,請(qǐng)根據(jù)自己的業(yè)務(wù)需求進(jìn)行編寫。)
@Slf4j
@Service
public class FaceService {
    @Value("${face-sdk.imagesPath}")
    String imagesPath;


    public String registerFace(String fileName, String nickName) {
        // 注冊(cè)人臉圖片
        String ip_nickName = fileName.replaceFirst("[.][^.]+$", "");
        // 獲取人臉特征值
        Mat mat = Imgcodecs.imread(imagesPath + fileName);
        long matAddr = mat.getNativeObjAddr();
        // 填充人臉信息 后期將從數(shù)據(jù)庫獲取
        String userInfo = nickName;
        String userId = ip_nickName.replace(".","");
        String groupId = "Face";
        // 用人臉特征值注冊(cè)
        JSONObject res = JSONObject.parseObject(Face.userAddByMat(matAddr, userId, groupId, userInfo));
        log.info("user add result is:{}", res);
        return res.getString("msg");
    }


    public String identifyFace(String fileName) {
        // 調(diào)用人臉sdkAPI
        Face.loadDbFace();
        Mat mat1 = Imgcodecs.imread(imagesPath + fileName);
        long mat1Addr = mat1.getNativeObjAddr();
        int type = 0;
        // 和人臉庫里面的人臉特征值比較(人臉識(shí)別)
        JSONObject res = JSONObject.parseObject(Face.identifyWithAllByMat(mat1Addr, type));
        log.info("identify res is:{}", res);
        if (!res.getString("errno").equals("0")) {
            return res.getString("msg");
        }
        // 獲取人臉識(shí)別信息
        double score = res.getJSONObject("data")
                .getJSONArray("result")
                .getJSONObject(0)
                .getDouble("score");
        String userId = res.getJSONObject("data")
                .getJSONArray("result")
                .getJSONObject(0)
                .getString("user_id");
        if (score > 80) {
            String nickName = userId.split("_")[1];
            return nickName;
        } else {
            log.info("根據(jù)圖片獲取人員信息失敗");
            return "Match score is low";
        }
    }

}
/**
 *  人臉識(shí)別 頁面相關(guān)接口
 */
@Slf4j
@RestController
@CrossOrigin(origins = "*", maxAge = 3600)
public class FaceController {

    @Autowired
    private FaceService faceService;

    @Value("${face-sdk.imagesPath}")
    String imagesPath;

    /**
     * 人臉注冊(cè)
     * @param file
     * @param ip
     * @param nickName
     * @return
     * @throws IOException
     */
    @PostMapping("/faceRegister")
    public R<String> faceRegister(@RequestParam("photo") MultipartFile file,
                                  @RequestParam("ip") String ip,
                                  @RequestParam("nickName") String nickName) throws IOException {

        String photo = Base64.getEncoder().encodeToString(file.getBytes());
        String fileName = ip + "_" + nickName + ".jpg";
        Base64ToImage.saveImage(imagesPath, fileName, photo);
        // 人臉注冊(cè)
        String res = faceService.registerFace(fileName, nickName);
        if(!res.equals("success")){
            return R.error(res,null);
        }
        return R.success(null);
    }


    /**
     * 檢測人臉
     * @param photo
     * @param ip
     * @return
     */
    @PostMapping("/faceDetection")
    public R<String> faceDetection(@RequestParam("photo") String photo, @RequestParam("ip") String ip) {
        String fileName = ip +".jpg"; // 臨時(shí)存儲(chǔ),用于檢測
        Base64ToImage.saveImage(imagesPath, fileName, photo);
        String res = faceService.identifyFace(fileName);
        return R.success(res);
    }



    /**
     * 查詢用戶組人臉
     * @param groupId
     * @return
     */
    @GetMapping("/getAllFace")
    public R<List> getAllFace(@RequestParam("groupId") String groupId){
        log.info("====>> getAllFace");
        List<String> userIdList = faceService.getAllFace(groupId);
        return R.success(userIdList);
    }
}

后記

  1. com.jni.face包下,除了Face.java類,其他都是示例程序,可以視情況刪除。

  2. models 文件夾里的模型可以按情況刪除,詳細(xì)可以查看文檔。

  3. 項(xiàng)目啟動(dòng)后,你的控制臺(tái)應(yīng)該會(huì)收到SDK初始化的信息。并且你的libPath 目錄下應(yīng)該生成db文件夾,人臉數(shù)據(jù)將存儲(chǔ)在這里。(db文件夾將生成在庫文件所在目錄。刪除face.db后,初始化SDK時(shí)會(huì)自動(dòng)生成,不需要額外操作。)

  4. 請(qǐng)不要使用熱部署插件,會(huì)導(dǎo)致依賴報(bào)錯(cuò)。

  5. 有生產(chǎn)需求的,但設(shè)備量不多,可以咸魚買序列號(hào)。(官網(wǎng)最低100個(gè)起購)文章來源地址http://www.zghlxwxcb.cn/news/detail-476984.html

到了這里,關(guān)于百度人臉識(shí)別_SpringBoot整合離線SDK的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 基于Springboot+百度AI人工智能人臉識(shí)別考勤系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)

    基于Springboot+百度AI人工智能人臉識(shí)別考勤系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)

    基于Springboot+百度AI人工智能人臉識(shí)別考勤系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn) ?博主介紹: 《Vue.js入門與商城開發(fā)實(shí)戰(zhàn)》《微信小程序商城開發(fā)》圖書作者,CSDN博客專家,在線教育專家,CSDN鉆石講師;專注大學(xué)生畢業(yè)設(shè)計(jì)教育和輔導(dǎo)。 所有項(xiàng)目都配有從入門到精通的基礎(chǔ)知識(shí)視頻課程,免費(fèi)

    2024年02月05日
    瀏覽(99)
  • JAVA基于百度AI接口的人臉識(shí)別考勤簽到系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)(Springboot框架)

    JAVA基于百度AI接口的人臉識(shí)別考勤簽到系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)(Springboot框架)

    ?博主介紹 :黃菊華老師《Vue.js入門與商城開發(fā)實(shí)戰(zhàn)》《微信小程序商城開發(fā)》圖書作者,CSDN博客專家,在線教育專家,CSDN鉆石講師;專注大學(xué)生畢業(yè)設(shè)計(jì)教育和輔導(dǎo)。 所有項(xiàng)目都配有從入門到精通的基礎(chǔ)知識(shí)視頻課程,免費(fèi) 項(xiàng)目配有對(duì)應(yīng)開發(fā)文檔、開題報(bào)告、任務(wù)書、

    2024年02月04日
    瀏覽(34)
  • SpringBoot項(xiàng)目(百度AI整合)——如何在Springboot中使用文字識(shí)別OCR入門

    SpringBoot項(xiàng)目(百度AI整合)——如何在Springboot中使用文字識(shí)別OCR入門

    前言:本系列博客嘗試結(jié)合官網(wǎng)案例,闡述百度 AI 開放平臺(tái)里的組件使用方式,核心是如何在spring項(xiàng)目中快速上手應(yīng)用。 本文介紹如何在Springboot中使用百度AI的文字識(shí)別OCR 其他相關(guān)的使用百度AI的文章列表如下: 如何在Springboot中使用語音文件識(shí)別 ffmpeg的安裝和使用 1.從官

    2024年02月02日
    瀏覽(25)
  • 基于java框架百度AI接口人臉識(shí)別考勤簽到系統(tǒng) (springboot框架)開題答辯常規(guī)問題和如何回答

    ?博主介紹 :黃菊華老師《Vue.js入門與商城開發(fā)實(shí)戰(zhàn)》《微信小程序商城開發(fā)》圖書作者,CSDN博客專家,在線教育專家,CSDN鉆石講師;專注大學(xué)生畢業(yè)設(shè)計(jì)教育和輔導(dǎo)。 所有項(xiàng)目都配有從入門到精通的基礎(chǔ)知識(shí)視頻課程,免費(fèi) 項(xiàng)目配有對(duì)應(yīng)開發(fā)文檔、開題報(bào)告、任務(wù)書、

    2024年01月17日
    瀏覽(32)
  • 百度駕駛證C++離線SDK V1.1 C#接入

    百度駕駛證C++離線SDK V1.1 C#接入

    百度駕駛證C++離線SDK V1.1 C#接入 目錄 說明? 效果? 項(xiàng)目 代碼 下載? 自己根據(jù)SDK封裝了動(dòng)態(tài)庫,然后C#調(diào)用。 SDK包結(jié)構(gòu) using Newtonsoft.Json; using OpenCvSharp; using System; using System.Collections.Generic; using System.Diagnostics; using System.Drawing; using System.IO; using System.Windows.Forms; using 駕駛證測試

    2024年04月14日
    瀏覽(18)
  • 百度云【人臉識(shí)別】

    百度云【人臉識(shí)別】

    目錄 1:百度云【人臉識(shí)別云服務(wù)】 2:Java-SDK文檔 3:項(xiàng)目中測試 人臉識(shí)別云服務(wù) 包含實(shí)名認(rèn)證、人臉對(duì)比、人臉?biāo)阉鳌⒒铙w檢測等能力。靈活應(yīng)用于金融、泛安防等行業(yè)場景,滿足身份核驗(yàn)、人臉考勤、閘機(jī)通行等業(yè)務(wù)需求 ? ? ? ? ? ? ? ? ? ? 全線免費(fèi)試用 公有云API最

    2024年02月13日
    瀏覽(20)
  • 項(xiàng)目:基于OpenCV+百度云人臉識(shí)別項(xiàng)目

    項(xiàng)目:基于OpenCV+百度云人臉識(shí)別項(xiàng)目

    基于OpenCV和百度云人臉識(shí)別的項(xiàng)目可以使用以下的框架來實(shí)現(xiàn): 數(shù)據(jù)采集和預(yù)處理:使用OpenCV來采集攝像頭或讀取圖像文件,并對(duì)圖像進(jìn)行預(yù)處理操作,例如裁剪、調(diào)整大小、灰度化等。 人臉檢測:使用OpenCV的人臉檢測功能來檢測圖像中的人臉。可以使用預(yù)訓(xùn)練的人臉檢測

    2024年01月16日
    瀏覽(32)
  • Java借助百度云人臉識(shí)別實(shí)現(xiàn)人臉注冊(cè)、登錄功能的完整示例

    Java借助百度云人臉識(shí)別實(shí)現(xiàn)人臉注冊(cè)、登錄功能的完整示例

    先來看一下Java借助百度云人臉識(shí)別實(shí)現(xiàn)人臉注冊(cè)登錄功能的預(yù)覽效果 登錄百度智能云控制臺(tái): https://console.bce.baidu.com/ ,開通人臉識(shí)別 選擇人臉識(shí)別項(xiàng),創(chuàng)建人臉識(shí)別應(yīng)用 人臉識(shí)別接口默認(rèn)全部選擇,也可以選擇添加其他接口。 得到應(yīng)用 ID、 API KEY、Secret Key 人臉識(shí)別API文

    2024年02月11日
    瀏覽(22)
  • 百度智能AI接口:人臉識(shí)別考勤簽到系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)

    ?博主介紹 :黃菊華老師《Vue.js入門與商城開發(fā)實(shí)戰(zhàn)》《微信小程序商城開發(fā)》圖書作者,CSDN博客專家,在線教育專家,CSDN鉆石講師;專注大學(xué)生畢業(yè)設(shè)計(jì)教育和輔導(dǎo)。 所有項(xiàng)目都配有從入門到精通的基礎(chǔ)知識(shí)視頻課程,免費(fèi) 項(xiàng)目配有對(duì)應(yīng)開發(fā)文檔、開題報(bào)告、任務(wù)書、

    2024年02月05日
    瀏覽(30)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包