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

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

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

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

基于QT+OpenCV的人臉識(shí)別-米爾iMX8M Plus開(kāi)發(fā)板的測(cè)評(píng)

米爾電子 ? 2022-05-23 10:34 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群


本篇測(cè)評(píng)由電子工程世界的優(yōu)秀測(cè)評(píng)者“流行科技”提供。此次測(cè)試的開(kāi)源項(xiàng)目,是基于QT+OpenCV的人臉識(shí)別打卡項(xiàng)目。本次體驗(yàn)使用的是開(kāi)源的代碼,此代碼本來(lái)是運(yùn)行在WIN下的,為了測(cè)試稍微進(jìn)行了修改,讓其運(yùn)行在米爾iMX8M Plus開(kāi)發(fā)板上。e50c1d82-d20d-11ec-8521-dac502259ad0.png測(cè)試項(xiàng)目實(shí)際是分了兩個(gè)工程,一個(gè)工程是作為管理員控制功能使用,添加人臉信息。同時(shí)也可以查詢到打卡記錄,對(duì)從機(jī)進(jìn)行下發(fā)通知等等。人臉識(shí)別我們主要需要用到opencv的人臉檢測(cè)分類(lèi)器。e51b0766-d20d-11ec-8521-dac502259ad0.pngOpenCV編譯完成后已經(jīng)提供好了的。因?yàn)檫@里還需要涉及到訓(xùn)練模型,有了模型后才能更好的識(shí)別,所以還是簡(jiǎn)單介紹下怎么訓(xùn)練的吧。 ??

  • CascadeClassifier cascada;
  • //將opencv官方訓(xùn)練好的人臉識(shí)別分類(lèi)器拷貝到自己的工程目錄中
  • cascada.load("F:\\video\\ccc\\haarcascade_frontalface_alt2.xml");
  • VideoCapture cap(1); //0表示電腦自帶的,如果用一個(gè)外接攝像頭,將0變成1
  • Mat frame, myFace;
  • int pic_num = 1;
  • while (1) {
  • //攝像頭讀圖像
  • cap >> frame;
  • vector faces;//vector容器存檢測(cè)到的faces
  • Mat frame_gray;
  • cvtColor(frame, frame_gray, COLOR_BGR2GRAY);//轉(zhuǎn)灰度化,減少運(yùn)算
  • cascada.detectMultiScale(frame_gray, faces, 1.1, 4, CV_HAAR_DO_ROUGH_SEARCH, Size(70, 70), Size(1000, 1000));
  • printf("檢測(cè)到人臉個(gè)數(shù):%d\n", faces.size());
  • //識(shí)別到的臉用矩形圈出
  • for (int i = 0; i < faces.size(); i++)
  • {
  • rectangle(frame, faces, Scalar(255, 0, 0), 2, 8, 0);
  • }
  • //當(dāng)只有一個(gè)人臉時(shí),開(kāi)始拍照
  • if (faces.size() == 1)
  • {
  • Mat faceROI = frame_gray(faces[0]);//在灰度圖中將圈出的臉?biāo)趨^(qū)域裁剪出
  • //cout << faces[0].x << endl;//測(cè)試下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()的左上角上面寫(xiě)序號(hào)
  • string filename = format("F:\\video\\%d.jpg", pic_num); //圖片的存放位置,frmat的用法跟QString差不對(duì)
  • imwrite(filename, myFace);//存在當(dāng)前目錄下
  • imshow(filename, myFace);//顯示下size后的臉
  • waitKey(500);//等待500us
  • destroyWindow(filename);//:銷(xiāo)毀指定的窗口
  • pic_num++;//序號(hào)加1
  • if (pic_num == 11)
  • {
  • return 0;//當(dāng)序號(hào)為11時(shí)退出循環(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;

通過(guò)上面代碼,完成圖像采集。

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

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

string fn_csv = "F:\\video\\ccc\\at.txt";

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

vector images;

vector<int> labels;

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

// 輸入的文件名已經(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;

// 文件有問(wèn)題,我們啥也做不了了,退出了

exit(1);

}

// 如果沒(méi)有讀取到足夠圖片,也退出.

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ù)集中移除最后一張圖片,作為測(cè)試圖片

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

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

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

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

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

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

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

// T這里是一個(gè)完整的PCA變換

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

// cv::createEigenFaceRecognizer(10);

//

// 如果你還希望使用置信度閾值來(lái)初始化,使用以下語(yǔ)句:

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

//

// 如果你使用所有特征并且使用一個(gè)閾值,使用以下語(yǔ)句:

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

//創(chuàng)建一個(gè)PCA人臉?lè)诸?lèi)器,暫時(shí)命名為model吧,創(chuàng)建完成后

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

Ptr model = face::create();

model->train(images, labels);

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

Ptr model1 = face::create();

model1->train(images, labels);

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

Ptr model2 = face::create();

model2->train(images, labels);

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

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

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

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

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

int predictedLabel1 = model1->predict(testSample);

int predictedLabel2 = model2->predict(testSample);

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

// 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;

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

e55243a2-d20d-11ec-8521-dac502259ad0.png

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

e57f8a92-d20d-11ec-8521-dac502259ad0.png


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

e59a0a02-d20d-11ec-8521-dac502259ad0.png

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


e5c0ec26-d20d-11ec-8521-dac502259ad0.png


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

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


e5dcae8e-d20d-11ec-8521-dac502259ad0.png

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


e5f6049c-d20d-11ec-8521-dac502259ad0.png

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

e625682c-d20d-11ec-8521-dac502259ad0.png

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

e657c902-d20d-11ec-8521-dac502259ad0.jpg

使用的硬件增加了一個(gè)攝像頭。

e66e744a-d20d-11ec-8521-dac502259ad0.jpg

這是打開(kāi)攝像頭采集的樣子。

e686f57e-d20d-11ec-8521-dac502259ad0.gif

這個(gè)GIF展示了我們的人臉檢測(cè)情況。

e7157efc-d20d-11ec-8521-dac502259ad0.png

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

e726ad30-d20d-11ec-8521-dac502259ad0.pnge77a2ce4-d20d-11ec-8521-dac502259ad0.png

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

    關(guān)注

    26

    文章

    6435

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    IMX8M Plus 上部署立體視覺(jué)模型 CPU 回退錯(cuò)誤 IMX8M Plus問(wèn)題

    您好,我想在 IMX8M Plus 上部署立體視覺(jué)模型。我已經(jīng)量化了模型并將其轉(zhuǎn)換為 TFlite 架構(gòu),但是當(dāng)模型部署在模型上時(shí),當(dāng)存在 NPU 無(wú)法處理的算子時(shí),我會(huì)遇到分割錯(cuò)誤。當(dāng)模型僅使用 CPU 運(yùn)行時(shí),沒(méi)有問(wèn)題。C
    發(fā)表于 04-29 07:23

    如何對(duì) iMX8M Plus MPU 進(jìn)行“熱復(fù)位”或“熱啟動(dòng)”?

    我們想對(duì) iMX8M Plus MPU 進(jìn)行“熱復(fù)位”或“熱啟動(dòng)”。 我們的意思是,我們希望讓 MPU 休息,并重新加載所有固件和作系統(tǒng),但保留部分外部 DDR 內(nèi)存內(nèi)容。 我們已經(jīng)嘗試了這個(gè)任務(wù)
    發(fā)表于 04-14 06:29

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

    : NXP Semiconductors FRDM i.MX 8M Plus開(kāi)發(fā)板.pdf 一、開(kāi)發(fā)板概述 FRDM - IMX8MPLUS
    的頭像 發(fā)表于 12-24 11:00 ?539次閱讀

    【作品合集】飛凌嵌入式OK527N-C開(kāi)發(fā)板測(cè)評(píng)

    微電子CH585開(kāi)發(fā)板測(cè)評(píng)作品合集 第七期合集 : 靈眸科技EASY EAI Orin Nano開(kāi)發(fā)板測(cè)評(píng)作品合集 第八期合集 : 合眾HZ-RK3568
    發(fā)表于 09-22 15:54

    【作品合集】視美泰M-K1HSE、3568開(kāi)發(fā)板測(cè)評(píng)

    視美泰M-K1HSE、3568開(kāi)發(fā)板測(cè)評(píng)作品合集 產(chǎn)品介紹: M-KIHSE開(kāi)發(fā)板M-KIH
    發(fā)表于 09-22 10:32

    【作品合集】玄鐵BPI-CanMV-K230D-Zero開(kāi)發(fā)板測(cè)評(píng)

    ) 【BPI-CanMV-K230D-Zero開(kāi)發(fā)板體驗(yàn)】AI 算法模型(人臉檢測(cè)、軀干檢測(cè)、車(chē)牌識(shí)別) 【BPI-CanMV-K230D-Zero開(kāi)發(fā)板體驗(yàn)】視頻會(huì)議場(chǎng)景下的 AI
    發(fā)表于 09-18 10:13

    【作品合集】群芯閃耀Milk-V Duo S 開(kāi)發(fā)板測(cè)評(píng)

    體驗(yàn)】SDK系統(tǒng)構(gòu)建體驗(yàn) 【Milk-V Duo S 開(kāi)發(fā)板免費(fèi)體驗(yàn)】移植lrzsz方便使用zmodem進(jìn)行文件傳輸 【Milk-V Duo S 開(kāi)發(fā)板免費(fèi)體驗(yàn)】人臉識(shí)別Demo應(yīng)用
    發(fā)表于 09-16 11:03

    【作品合集】米爾RK3576開(kāi)發(fā)板測(cè)評(píng)

    米爾RK3576開(kāi)發(fā)板測(cè)評(píng)作品合集 產(chǎn)品介紹: RK3576 是瑞芯微一款面向AI市場(chǎng)推出的高性能處理器,它配備了四核Cortex-A72和四 核Cortex-A53 的 CPU,集成了6TOPS
    發(fā)表于 09-11 10:19

    【作品合集】靈眸科技EASY EAI Orin Nano(RK3576)開(kāi)發(fā)板測(cè)評(píng)

    【EASY EAI Orin Nano(RK3576)開(kāi)發(fā)板試用體驗(yàn)】人臉識(shí)別體驗(yàn) 【EASY EAI Orin Nano(RK3576)開(kāi)發(fā)板試用體驗(yàn)】
    發(fā)表于 09-09 09:59

    【作品精選】2025電子發(fā)燒友開(kāi)發(fā)板測(cè)評(píng)大賽作品合集!

    開(kāi)發(fā)板測(cè)評(píng)作品合集 靈眸科技EASY EAI Orin Nano開(kāi)發(fā)板測(cè)評(píng)作品合集 合眾HZ-RK3568開(kāi)發(fā)板
    發(fā)表于 09-03 15:24

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

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

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

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

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

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

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

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

    基于RK3576開(kāi)發(fā)板的人臉識(shí)別算法

    RK3576開(kāi)發(fā)板展示人臉識(shí)別算法例程和API說(shuō)明
    的頭像 發(fā)表于 05-07 16:48 ?2981次閱讀
    基于RK3576<b class='flag-5'>開(kāi)發(fā)板</b><b class='flag-5'>的人臉</b><b class='flag-5'>識(shí)別</b>算法
    郯城县| 伊川县| 开江县| 台东县| 武清区| 晋宁县| 昭苏县| 潢川县| 定远县| 仪陇县| 武胜县| 武安市| 苗栗市| 轮台县| 石楼县| 高陵县| 永川市| 公主岭市| 扶余县| 五莲县| 贺兰县| 老河口市| 宣威市| 邻水| 郁南县| 东源县| 汨罗市| 宁陕县| 河源市| 南平市| 潮安县| 海门市| 阳谷县| 东安县| 页游| 佛教| 勐海县| 孟州市| 六安市| 治县。| 綦江县|