日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

QT+OpenCV人臉識別—米爾iMX8MPlus開發(fā)板項目

米爾MYIR ? 來源:米爾MYIR ? 作者:米爾MYIR ? 2022-05-18 18:00 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

本篇測評由電子工程世界的優(yōu)秀測評者“流行科技”提供。

此次測試的開源項目,是基于QT+OpenCV的人臉識別打卡項目。本次體驗使用的是開源的代碼,此代碼本來是運行在WIN下的,為了測試稍微進(jìn)行了修改,讓其運行在米爾iMX8M Plus開發(fā)板上。

poYBAGKEwi6AY9jwAABTf11XXg4829.png

測試項目實際是分了兩個工程,一個工程是作為管理員控制功能使用,添加人臉信息。同時也可以查詢到打卡記錄,對從機(jī)進(jìn)行下發(fā)通知等等。

人臉識別我們主要需要用到opencv的人臉檢測分類器。

pYYBAGKEwkeAMzq1AACDsGszgqw686.png

OpenCV編譯完成后已經(jīng)提供好了的。

因為這里還需要涉及到訓(xùn)練模型,有了模型后才能更好地識別,所以還是簡單介紹下怎么訓(xùn)練的吧。

CascadeClassifier cascada;

//將opencv官方訓(xùn)練好的人臉識別分類器拷貝到自己的工程目錄中

cascada.load("F:videoccchaarcascade_frontalface_alt2.xml");

VideoCapture cap(1); //0表示電腦自帶的,如果用一個外接攝像頭,將0變成1

Mat frame, myFace;

int pic_num = 1;

while (1) {

//攝像頭讀圖像

cap >> frame;

vector faces;//vector容器存檢測到的faces

Mat frame_gray;

cvtColor(frame, frame_gray, COLOR_BGR2GRAY);//轉(zhuǎn)灰度化,減少運算

cascada.detectMultiScale(frame_gray, faces, 1.1, 4, CV_HAAR_DO_ROUGH_SEARCH, Size(70, 70), Size(1000, 1000));

printf("檢測到人臉個數(shù):%dn", faces.size());

//識別到的臉用矩形圈出

for (int i = 0; i < faces.size(); i++)

{

rectangle(frame, faces, Scalar(255, 0, 0), 2, 8, 0);

}

//當(dāng)只有一個人臉時,開始拍照

if (faces.size() == 1)

{

Mat faceROI = frame_gray(faces[0]);//在灰度圖中將圈出的臉?biāo)趨^(qū)域裁剪出

//cout << faces[0].x << endl;//測試下face[0].x

resize(faceROI, myFace, Size(92, 112));//將興趣域size為92*112

putText(frame, to_string(pic_num), faces[0].tl(), 3, 1.2, (0, 0, 225), 2, 0);//在 faces[0].tl()的左上角上面寫序號

string filename = format("F:video%d.jpg", pic_num); //圖片的存放位置,frmat的用法跟QString差不多

imwrite(filename, myFace);//存在當(dāng)前目錄下

imshow(filename, myFace);//顯示下size后的臉

waitKey(500);//等待500us

destroyWindow(filename);//:銷毀指定的窗口

pic_num++;//序號加1

if (pic_num == 11)

{

return 0;//當(dāng)序號為11時退出循環(huán),一共拍10張照片

}

}

int c = waitKey(10);

if ((char)c == 27) { break; } //10us內(nèi)輸入esc則退出循環(huán)

imshow("frame", frame);//顯示視頻流

waitKey(100);//等待100us

}

return 0;

通過上面的代碼,完成圖像采集。

//讀取你的CSV文件路徑.

//string fn_csv = string(argv[1]);

string fn_csv = "F:videocccat.txt";

// 2個容器來存放圖像數(shù)據(jù)和對應(yīng)的標(biāo)簽

vector images;

vector labels;

// 讀取數(shù)據(jù). 如果文件不合法就會出錯

// 輸入的文件名已經(jīng)有了.

try

{

read_csv(fn_csv, images, labels); //從csv文件中批量讀取訓(xùn)練數(shù)據(jù)

}

catch (cv::Exception& e)

{

cerr << "Error opening file "" << fn_csv << "". Reason: " << e.msg << endl;

// 文件有問題,我們啥也做不了了,退出了

exit(1);

}

// 如果沒有讀取到足夠圖片,也退出.

if (images.size() <= 1) {

string error_message = "This demo needs at least 2 images to work. Please add more images to your data set!";

CV_Error(CV_StsError, error_message);

}

for (int i = 0; i < images.size(); i++)

{

//cout<();<>

if (images.size() != Size(92, 112))

{

cout << i << endl;

cout << images.size() << endl;

}

}

// 下面的幾行代碼僅僅是從你的數(shù)據(jù)集中移除最后一張圖片,作為測試圖片

//[gm:自然這里需要根據(jù)自己的需要修改,他這里簡化了很多問題]

Mat testSample = images[images.size() - 1];

int testLabel = labels[labels.size() - 1];

images.pop_back();//刪除最后一張照片,此照片作為測試圖片

labels.pop_back();//刪除最有一張照片的labels

// 下面幾行創(chuàng)建了一個特征臉模型用于人臉識別,

// 通過CSV文件讀取的圖像和標(biāo)簽訓(xùn)練它。

// T這里是一個完整的PCA變換

//如果你只想保留10個主成分,使用如下代碼

// cv::createEigenFaceRecognizer(10);

//

// 如果你還希望使用置信度閾值來初始化,使用以下語句:

// cv::createEigenFaceRecognizer(10, 123.0);

//

// 如果你使用所有特征并且使用一個閾值,使用以下語句:

// cv::createEigenFaceRecognizer(0, 123.0);

//創(chuàng)建一個PCA人臉分類器,暫時命名為model吧,創(chuàng)建完成后

//調(diào)用其中的成員函數(shù)train()來完成分類器的訓(xùn)練

Ptr model = face::EigenFaceRecognizer::create();

model->train(images, labels);

model->save("MyFacePCAModel.xml");//保存路徑可自己設(shè)置,但注意用“”

Ptr model1 = face::FisherFaceRecognizer::create();

model1->train(images, labels);

model1->save("MyFaceFisherModel.xml");

Ptr model2 = face::LBPHFaceRecognizer::create();

model2->train(images, labels);

model2->save("MyFaceLBPHModel.xml");

// 下面對測試圖像進(jìn)行預(yù)測,predictedLabel是預(yù)測標(biāo)簽結(jié)果

//注意predict()入口參數(shù)必須為單通道灰度圖像,如果圖像類型不符,需要先進(jìn)行轉(zhuǎn)換

//predict()函數(shù)返回一個整形變量作為識別標(biāo)簽

int predictedLabel = model->predict(testSample);//加載分類器

int predictedLabel1 = model1->predict(testSample);

int predictedLabel2 = model2->predict(testSample);

// 還有一種調(diào)用方式,可以獲取結(jié)果同時得到閾值:

// int predictedLabel = -1;

// double confidence = 0.0;

// model->predict(testSample, predictedLabel, confidence);

string result_message = format("Predicted class = %d / Actual class = %d.", predictedLabel, testLabel);

string result_message1 = format("Predicted class = %d / Actual class = %d.", predictedLabel1, testLabel);

string result_message2 = format("Predicted class = %d / Actual class = %d.", predictedLabel2, testLabel);

cout << result_message << endl;

cout << result_message1 << endl;

cout << result_message2 << endl;

getchar();

//waitKey(0);

return 0;

通過上面的代碼進(jìn)行訓(xùn)練,訓(xùn)練使用了python。所以系統(tǒng)環(huán)境需要配置好。

poYBAGKEwl6AQKHtAAAm8l7Gwow014.png

在此文件中,把我們采集到的圖像,放進(jìn)去,新建一個文件夾。

poYBAGKEwmyATvSEAABt9rLqLms536.png

之后就是把我們的at.txt也加入我們的文件。

pYYBAGKEwnmAX7M1AAB6AnakQhQ378.png

訓(xùn)練好后,我們就得到了我們所需要的訓(xùn)練文件。

poYBAGKEwoSAEKhsAABN9e09ki0029.png

在我們打卡界面,點擊打卡時就是這樣的。加載訓(xùn)練好的東西。然后啟動定時器,去獲取攝像頭信號,然后對比,最終和數(shù)據(jù)庫一致就認(rèn)為打卡成功。

上面訓(xùn)練部分,其實提供的另一個工程就全部完成了。

poYBAGKEwpGASG9iAABFuJ2enWs396.png

這是我們win端界面,圓框就是我們攝像頭采集圖像顯示的位置。

pYYBAGKEwpyAFIqiAABEtCveTHg066.png

我們需要在Ubuntu下把庫全部替換,這樣就能編譯過了,然后拷貝到開發(fā)板上運行。如下:

pYYBAGKEwqaAKh6yAAAsOzMnM4Y825.png

進(jìn)來就提示數(shù)據(jù)庫打開失敗了,我們這個都是基于數(shù)據(jù)庫,所以還是比較尷尬的,后期的話可以嘗試自己全部編譯下,然后更新吧。目前就測試,看下效果吧。

pYYBAGKEwriAHmWPAADzCEbAve8180.png

使用的硬件增加了一個攝像頭。

pYYBAGKEwsOAACWNAADJEkIMIyA546.png

這是打開攝像頭采集的樣子。

pYYBAGKDbRWADoP6ABz9qHtm7fY289.gif

這個GIF展示了我們的人臉檢測情況。

poYBAGKEwtaAEPbSAABSE9pWx4Y131.png

由于沒有數(shù)據(jù)庫,只能打印一些信息。當(dāng)兩個數(shù)據(jù)相等時就進(jìn)入下一步,判斷打卡了。由于沒有數(shù)據(jù)庫,就展示下電腦端的效果吧。

pYYBAGKEwuOAdM_0AABKUBgTxkQ268.pngpoYBAGKEwumAIlXbAABbm5btOrU794.png

審核編輯:符乾江

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 開發(fā)板
    +關(guān)注

    關(guān)注

    26

    文章

    6433

    瀏覽量

    121221
  • 人臉識別
    +關(guān)注

    關(guān)注

    77

    文章

    4132

    瀏覽量

    88792
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    FRDM - IMX93開發(fā)板深度解析:從硬件到應(yīng)用的全方位指南

    ,它為開發(fā)者提供了一個低功耗、高性能的平臺,能夠快速驗證和開發(fā)基于i.MX 93應(yīng)用處理器的項目。本文將從硬件概述、功能描述、配件使用等多個方面對FRDM - IMX93
    的頭像 發(fā)表于 12-24 11:40 ?2177次閱讀

    探索FRDM - IMX8MPLUS開發(fā)板:開啟嵌入式開發(fā)新旅程

    探索FRDM - IMX8MPLUS開發(fā)板:開啟嵌入式開發(fā)新旅程 作為電子工程師,我們總是在尋找性能卓越、功能豐富且易于上手的開發(fā)板,以滿足不同項目
    的頭像 發(fā)表于 12-24 11:00 ?539次閱讀

    RK3506開發(fā)板QT Creator開發(fā)手冊,交叉編譯工具鏈與QT應(yīng)用示例,入門必備

    本文基于觸覺智能RK3506核心/開發(fā)板介紹QTCreator交叉編譯配置與QT應(yīng)用示例。如需購買開發(fā)板進(jìn)行評估驗證簡介QTCreatorQtCreator?是由TheQtCompa
    的頭像 發(fā)表于 09-30 16:26 ?3976次閱讀
    RK3506<b class='flag-5'>開發(fā)板</b><b class='flag-5'>QT</b> Creator<b class='flag-5'>開發(fā)</b>手冊,交叉編譯工具鏈與<b class='flag-5'>QT</b>應(yīng)用示例,入門必備

    如何移植EtherCAT Igh--基于米爾RK3576開發(fā)板

    本文將介紹基于米爾電子MYD-LR3576開發(fā)板米爾基于瑞芯微RK3576開發(fā)板)的端移植EtherCATIgh方案的
    的頭像 發(fā)表于 09-26 08:04 ?1w次閱讀
    如何移植EtherCAT Igh--基于<b class='flag-5'>米爾</b>RK3576<b class='flag-5'>開發(fā)板</b>

    【作品合集】米爾RK3576開發(fā)板測評

    米爾RK3576開發(fā)板免費試用 作者:EPTmachine【米爾RK3576開發(fā)板免費體驗】1、開發(fā)環(huán)境、鏡像燒錄、
    發(fā)表于 09-11 10:19

    如何端編譯OpenCV并搭建應(yīng)用--基于瑞芯微米爾RK3576開發(fā)板

    本文將介紹基于米爾電子MYD-LR3576開發(fā)板米爾基于瑞芯微 RK3576開發(fā)板)的端編譯Open
    發(fā)表于 08-08 17:14

    如何在RK3576開發(fā)板端編譯OpenCV并搭建應(yīng)用

    本文將介紹基于米爾電子MYD-LR3576開發(fā)板米爾基于瑞芯微RK3576開發(fā)板)的端編譯OpenC
    的頭像 發(fā)表于 08-08 08:04 ?3699次閱讀
    如何在RK3576<b class='flag-5'>開發(fā)板</b>上<b class='flag-5'>板</b>端編譯<b class='flag-5'>OpenCV</b>并搭建應(yīng)用

    【Milk-V Duo S 開發(fā)板免費體驗】人臉檢測

    【Milk-V Duo S 開發(fā)板免費體驗】人臉檢測 本文介紹了 Milk-V Duo S 開發(fā)板結(jié)合 OV5647 攝像頭模塊,實現(xiàn)人臉檢測的項目
    發(fā)表于 07-27 16:53

    米爾RK3576開發(fā)板免費體驗】1、開發(fā)環(huán)境、鏡像燒錄、QT開發(fā)環(huán)境搭建以及應(yīng)用部署

    。 使用RKDevTool選擇鏡像和設(shè)備,并將鏡像更新到開發(fā)板。 2、安裝QT Creator 使用BuildRoot構(gòu)建的工具鏈中包含qmake,可以用于開發(fā)板QT應(yīng)用程序。首先
    發(fā)表于 07-14 11:26

    【Milk-V Duo S 開發(fā)板免費體驗】SDK編譯、人臉檢測、OpenCV測試

    【Milk-V Duo S 開發(fā)板免費體驗】SDK編譯、人臉檢測、OpenCV測試 本文介紹了 Milk-V Duo S 開發(fā)板實現(xiàn) Buildroot SDK 鏡像編譯、基于 TDL
    發(fā)表于 07-11 13:48

    基于LockAI視覺識別模塊:C++人臉識別

    cap.release(); return 0; } 4. 編譯調(diào)試 4.1 編譯環(huán)境搭建 請確保你已經(jīng)按照 開發(fā)環(huán)境搭建指南 正確配置了開發(fā)環(huán)境。 同時已經(jīng)正確連接開發(fā)板。 4.2 Cmake介紹
    發(fā)表于 07-01 12:01

    基于米爾全志T536開發(fā)板的多協(xié)議物聯(lián)網(wǎng)關(guān)的方案測試

    本文將介紹基于米爾電子MYD-LT536開發(fā)板米爾基于全志T536開發(fā)板)的多協(xié)議物聯(lián)網(wǎng)關(guān)方案的開發(fā)測試。摘自優(yōu)秀創(chuàng)作者-ALSET
    的頭像 發(fā)表于 06-19 08:03 ?2309次閱讀
    基于<b class='flag-5'>米爾</b>全志T536<b class='flag-5'>開發(fā)板</b>的多協(xié)議物聯(lián)網(wǎng)關(guān)的方案測試

    基于米爾全志T536開發(fā)板的視頻識別應(yīng)用方案

    本文將介紹基于米爾電子MYD-LT536開發(fā)板米爾基于全志T536開發(fā)板)的視頻識別應(yīng)用方案測試。摘自優(yōu)秀創(chuàng)作者-魯治驛基于
    的頭像 發(fā)表于 06-05 08:01 ?2539次閱讀
    基于<b class='flag-5'>米爾</b>全志T536<b class='flag-5'>開發(fā)板</b>的視頻<b class='flag-5'>識別</b>應(yīng)用方案

    基于RK3576開發(fā)板QT GUI例程

    EASYEAI Orin-Nano開發(fā)板搭載了帶有xfce桌面環(huán)境的Debian系統(tǒng),支持Qt應(yīng)用程序的開發(fā)和運行。開發(fā)板采用RK3576 CPU,性能強(qiáng)大,可直接在
    的頭像 發(fā)表于 05-14 10:26 ?1673次閱讀
    基于RK3576<b class='flag-5'>開發(fā)板</b>的<b class='flag-5'>QT</b> GUI例程

    基于RK3576開發(fā)板人臉識別算法

    RK3576開發(fā)板展示人臉識別算法例程和API說明
    的頭像 發(fā)表于 05-07 16:48 ?2975次閱讀
    基于RK3576<b class='flag-5'>開發(fā)板</b>的<b class='flag-5'>人臉</b><b class='flag-5'>識別</b>算法
    乌海市| 长宁县| 开平市| 岚皋县| 宜丰县| 宜州市| 沿河| 翼城县| 遂昌县| 穆棱市| 尼玛县| 周至县| 台湾省| 麻江县| 永顺县| 怀化市| 东丰县| 肃南| 清远市| 南宁市| 青阳县| 富蕴县| 高密市| 沽源县| 安化县| 嘉峪关市| 西峡县| 迭部县| 上虞市| 常熟市| 邻水| 康乐县| 元江| 安新县| 称多县| 青海省| 普定县| 益阳市| 锡林浩特市| 新田县| 德安县|