欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

Qt如何實(shí)現(xiàn)人臉識別在線版

本篇內(nèi)容主要講解“Qt如何實(shí)現(xiàn)人臉識別在線版”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實(shí)用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“Qt如何實(shí)現(xiàn)人臉識別在線版”吧!

在宜州等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供成都網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)、外貿(mào)網(wǎng)站建設(shè) 網(wǎng)站設(shè)計(jì)制作按需網(wǎng)站建設(shè),公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),高端網(wǎng)站設(shè)計(jì),全網(wǎng)營銷推廣,外貿(mào)營銷網(wǎng)站建設(shè),宜州網(wǎng)站建設(shè)費(fèi)用合理。

一、前言

關(guān)于人臉識別這塊,前些年不要太火,哪怕是到了今天依然火的一塌糊涂,什么玩意都要跟人臉識別搭個(gè)邊,這東西應(yīng)該只是人工智能的一個(gè)很小的部分,人臉識別光從字面上理解就是識別出人臉區(qū)域,其實(shí)背后真正的處理是拿到人臉區(qū)域圖片,提取人臉特征值,再用這些特征值去做比對分析處理,識別出到底是誰,國內(nèi)廠家也不少,比拼的就是準(zhǔn)確度誤報(bào)率,速度無非就是靠堆硬件來,什么VPU各種并行運(yùn)算都堆上去,速度杠杠的,好多廠家都做到了幾個(gè)毫秒的級別,估計(jì)很多廠家都是在開源的基礎(chǔ)上加上了自家的算法,一直跑呀跑的整出了符合自家算法的人臉模型文件,比如百度的人臉識別模型文件,經(jīng)過好幾年的發(fā)展,越來越大越來越細(xì)越來越準(zhǔn)。

聽某個(gè)大神說過,很多時(shí)候人工智能其實(shí)并不是完全的智能,絕大部分都停留在半智能階段,而且這種半智能階段還需要借助很多輔助的硬件甚至人為的判斷,很多模型庫文件的生成就是靠一小小姑娘在那邊流水線上類似的不停的點(diǎn)呀點(diǎn),號稱深度學(xué)習(xí)算法,就是讓他識別更多的數(shù)據(jù),使得更準(zhǔn)確。關(guān)于人臉識別或者人工智能,外行一般覺得很科幻,內(nèi)行一般覺得很絕望,業(yè)界領(lǐng)袖和領(lǐng)袖各種打雞血。

國內(nèi)的廠家大部分都提供了官網(wǎng)對應(yīng)的api來進(jìn)行處理,注冊個(gè)賬號,搞個(gè)key,直接就可以擼起來,關(guān)于這塊技術(shù)上沒有任何難點(diǎn),初學(xué)者都可以搞定,無非就是先post數(shù)據(jù),拿到返回的數(shù)據(jù)進(jìn)行解析,要搞清楚的就是如何填充要post的數(shù)據(jù),比如帶上key,組織其他數(shù)據(jù)比如圖片是base64字符串上傳還是二進(jìn)制文件上傳等,返回的數(shù)據(jù)都是json啦,直接用現(xiàn)成的json庫進(jìn)行解析就ok。

百度人臉識別在線版和離線版SDK的封裝:

  1. 離線版要求支持C++11的編譯器,而且必須為MSVC。不支持mingw編譯器。

  2. 在線版中的密鑰等信息,務(wù)必記得換成自己申請的。

  3. 離線版本只能在windows上使用。

  4. 離線版本需要自己申請密鑰。找到facebaidusdk文件夾下的LicenseTool.exe,填寫后臺離線SDK管理中申請到的序列號,單擊激活按鈕。

  5. 離線版本對應(yīng)的動(dòng)態(tài)庫和模型文件自行從官網(wǎng)下載。

  6. 如果源碼包中有facebaidusdk+face-resource文件夾則說明帶了動(dòng)態(tài)庫和模型庫文件夾,只需要將facebaidusdk文件夾下的所有文件復(fù)制到可執(zhí)行文件同一目錄,face-resource文件夾復(fù)制到可執(zhí)行文件夾目錄同等級目錄即可。目錄位置見snap文件夾下的示例圖。

  7. facebaidusdk目錄下的TestFaceApi.exe為百度提供的測試程序,先要將USB攝像頭插到電腦上,會實(shí)時(shí)找人臉框。

二、功能特點(diǎn)

  1. 支持的功能包括人臉識別、人臉比對、人臉?biāo)阉?、活體檢測等。

  2. 在線版還支持身份證、駕駛證、行駛證、銀行卡等識別。

  3. 在線版的協(xié)議支持百度、曠視,離線版的支持百度,可定制。

  4. 除了支持X86架構(gòu),還支持嵌入式linux比如contex-A9、樹莓派等。

  5. 每個(gè)功能的執(zhí)行除了返回結(jié)果還返回執(zhí)行用時(shí)時(shí)間。

  6. 多線程處理,通過type控制當(dāng)前處理類型。

  7. 支持單張圖片檢索相似度最高的圖片。

  8. 支持指定目錄圖片用來生成人臉特征值文件。

  9. 可設(shè)置等待處理圖片隊(duì)列中的數(shù)量。

  10. 每次執(zhí)行都有成功或者失敗的信號返回。

  11. 人臉?biāo)阉鞯姆祷亟Y(jié)果包含了原圖+最大相似度圖+相似度等。

  12. 人臉比對同時(shí)支持兩張圖片和兩個(gè)特征值比對。

  13. 相關(guān)功能自定義一套協(xié)議用于客戶端和服務(wù)端,可以通過TCP通信進(jìn)行交互。

  14. 自定義人臉識別協(xié)議非常適用于中心一臺服務(wù)器,現(xiàn)場若干設(shè)備請求的場景。

  15. 每個(gè)模塊全部是獨(dú)立的一個(gè)類,代碼整潔、注釋完善。

三、效果圖

Qt如何實(shí)現(xiàn)人臉識別在線版

四、核心代碼

void FaceWebBaiDu::finished(QNetworkReply *reply)
{
    QString error = reply->errorString();
    if (!error.isEmpty() && error != "Unknown error") {
        emit receiveError(error);
    }

    if (reply->bytesAvailable() > 0 && reply->error() == QNetworkReply::NoError) {
        QString data = reply->readAll();
        reply->deleteLater();

        //發(fā)送接收數(shù)據(jù)信號
        emit receiveData(data);

        //初始化腳本引擎
        QScriptEngine engine;
        //構(gòu)建解析對象
        QScriptValue script = engine.evaluate("value=" + data);

        //獲取鑒權(quán)標(biāo)識符
        QString token = script.property("access_token").toString();
        if (!token.isEmpty()) {
            this->token = token;
            emit receiveResult(0, "鑒權(quán)標(biāo)識返回成功");
            return;
        }

        //通用返回結(jié)果字段
        int code = script.property("error_code").toInt32();
        QString msg = script.property("error_msg").toString();
        emit receiveResult(code, msg);

        //圖片識別部分
        QScriptValue result = script.property("result");
        if (!result.isNull()) {
            //人臉識別
            if (data.contains("location")) {
                QScriptValue face_list = result.property("face_list");
                checkFaceList(face_list);
            }

            //人臉比對
            if (data.contains("score") && !data.contains("location")) {
                QScriptValue score = result.property("score");
                float result = score.toString().toFloat();
                if (result > 0) {
                    emit receiveFaceCompare(QRect(), QRect(), result);
                } else {
                    emit receiveFaceCompareFail();
                }
            }

            //活體檢測
            if (data.contains("face_liveness")) {
                QScriptValue face_liveness = result.property("face_liveness");
                float result = face_liveness.toString().toFloat();
                if (result >= 0) {
                    emit receiveLive(result);
                }
            }           
        }        
    }
}

void FaceWebBaiDu::checkFaceList(const QScriptValue &scriptValue)
{
    //創(chuàng)建迭代器逐個(gè)解析具體值
    QScriptValueIterator it(scriptValue);
    while (it.hasNext()) {
        it.next();
        if (it.flags() & QScriptValue::SkipInEnumeration) {
            continue;
        }

        QRect rect;
        QString face_token = it.value().property("face_token").toString();
        if (!face_token.isEmpty()) {
            QScriptValue value = it.value().property("location");
            rect = FaceHelper::getRect(value);
        }

        if (rect.width() > 0) {
            emit receiveFaceRect(rect);
            break;
        }
    }
}

void FaceWebBaiDu::getToken()
{
    //具體參見 http://ai.baidu.com/ai-doc/REFERENCE/Ck3dwjhhu
    QStringList list;
    list.append(QString("grant_type=%1").arg("client_credentials"));
    list.append(QString("client_id=%1").arg(key));
    list.append(QString("client_secret=%1").arg(secret));
    QString data = list.join("&");

    QString url = "https://aip.baidubce.com/oauth/2.0/token";
    FaceHelper::sendData(manager, url, data);
}

void FaceWebBaiDu::detect(const QImage &img)
{
    QString imgData = FaceHelper::getImageData2(img);

    QStringList list;
    list.append(QString("{\"image\":\"%1\",\"image_type\":\"BASE64\"}").arg(imgData));
    QString data = list.join("");

    QString url = QString("https://aip.baidubce.com/rest/2.0/face/v3/detect?access_token=%1").arg(token);
    FaceHelper::sendData(manager, url, data);
}

void FaceWebBaiDu::compare(const QImage &img1, const QImage &img2)
{
    QString imgData1 = FaceHelper::getImageData2(img1);
    QString imgData2 = FaceHelper::getImageData2(img2);

    //如果需要活體檢測則NONE改為LOW NORMAL HIGH
    QStringList list;
    list.append("[");
    list.append(QString("{\"image\":\"%1\",\"image_type\":\"BASE64\",\"liveness_control\":\"NONE\"}").arg(imgData1));
    list.append(",");
    list.append(QString("{\"image\":\"%1\",\"image_type\":\"BASE64\",\"liveness_control\":\"NONE\"}").arg(imgData2));
    list.append("]");
    QString data = list.join("");

    QString url = QString("https://aip.baidubce.com/rest/2.0/face/v3/match?access_token=%1").arg(token);
    FaceHelper::sendData(manager, url, data);
}

void FaceWebBaiDu::live(const QImage &img)
{
    QList<QImage> imgs;
    if (!img.isNull()) {
        imgs << img;
    }

    live(imgs);
}

void FaceWebBaiDu::live(const QList<QImage> &imgs)
{
    //記住最后一次處理的時(shí)間,限制頻繁的調(diào)用
    QDateTime now = QDateTime::currentDateTime();
    if (lastTime.msecsTo(now) < 500) {
        return;
    }

    lastTime = now;
    QStringList list;
    list.append("[");

    int count = imgs.count();
    for (int i = 0; i < count; i++) {
        QString imgData = FaceHelper::getImageData2(imgs.at(i));
        list.append(QString("{\"image\":\"%1\",\"image_type\":\"BASE64\"}").arg(imgData));
        if (i < count - 1) {
            list.append(",");
        }
    }

    list.append("]");
    QString data = list.join("");

    QString url = QString("https://aip.baidubce.com/rest/2.0/face/v3/faceverify?access_token=%1").arg(token);
    FaceHelper::sendData(manager, url, data);
}

到此,相信大家對“Qt如何實(shí)現(xiàn)人臉識別在線版”有了更深的了解,不妨來實(shí)際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!

網(wǎng)頁名稱:Qt如何實(shí)現(xiàn)人臉識別在線版
網(wǎng)頁鏈接:http://aaarwkj.com/article48/gpgiep.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供商城網(wǎng)站、網(wǎng)站設(shè)計(jì)Google、用戶體驗(yàn)、電子商務(wù)定制網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站托管運(yùn)營
亚洲第一狼人天堂在线| 亚洲一区二区三区熟妇| 未满十八勿进黄网观看| 99精品国产麻豆一区二区三区| 国产一级内射视频免费观看| 黄色av在线免费观看| 黑丝美女被内射视频免费观看| 久久精品国产欧美日韩| 亚洲欧美国产日韩综合在线| 日韩成年人高清精品不卡一区二区 | 好吊毛片一区二区三区| 色综合一区二区日本韩国亚洲 | 五月天丁香婷婷深爱| 国产精品亚洲在钱视频| 亚洲另类熟女国产精品老| 亚洲成人自拍视频在线观看| 青青草日韩视频在线观看| 亚洲激情一区在线观看| 夫妻晚上同房太猛视频| 亚洲av少妇高潮流白浆在线| 欧美国产免费高清视频| 精品三级黄色国产片| 黄色录像免费看中文字幕| 麻豆色视频在线观看免费| 神马久久午夜免费福利| 国产麻豆精品二区视频| 日韩性视频激情在线一区| 久久不卡高清免费av| 日韩中字伦理熟妇人妻| 亚洲av丰满熟妇在线观看| 亚洲超清av在线播放一区二区| 亚洲天堂免费观看av| 天堂av新版在线观看| 人人妻人人澡人人爽人人老司机| 18岁禁看网站在线看| 日韩少妇一级淫片免费| 久久国产精品av在线观看| 蜜臀av人妻一区二区三区| 日韩精品国产专区一区| 亚洲精品一区国产精品av| 自拍偷拍视频欧美第一页|