在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

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

米爾MYIR ? 來源:米爾MYIR ? 作者:米爾MYIR ? 2022-05-18 18:00 ? 次閱讀

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

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

poYBAGKEwi6AY9jwAABTf11XXg4829.png

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

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

pYYBAGKEwkeAMzq1AACDsGszgqw686.png

OpenCV編譯完成后已經提供好了的。

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

CascadeClassifier cascada;

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

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);//轉灰度化,減少運算

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

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

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

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

{

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

}

//當只有一個人臉時,開始拍照

if (faces.size() == 1)

{

Mat faceROI = frame_gray(faces[0]);//在灰度圖中將圈出的臉所在區域裁剪出

//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);//存在當前目錄下

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

waitKey(500);//等待500us

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

pic_num++;//序號加1

if (pic_num == 11)

{

return 0;//當序號為11時退出循環,一共拍10張照片

}

}

int c = waitKey(10);

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

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

waitKey(100);//等待100us

}

return 0;

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

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

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

string fn_csv = "F:videocccat.txt";

// 2個容器來存放圖像數據和對應的標簽

vector images;

vector labels;

// 讀取數據. 如果文件不合法就會出錯

// 輸入的文件名已經有了.

try

{

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

}

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;

}

}

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

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

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

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

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

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

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

// 通過CSV文件讀取的圖像和標簽訓練它。

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

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

// cv::createEigenFaceRecognizer(10);

//

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

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

//

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

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

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

//調用其中的成員函數train()來完成分類器的訓練

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

model->train(images, labels);

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

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");

// 下面對測試圖像進行預測,predictedLabel是預測標簽結果

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

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

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

int predictedLabel1 = model1->predict(testSample);

int predictedLabel2 = model2->predict(testSample);

// 還有一種調用方式,可以獲取結果同時得到閾值:

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

通過上面的代碼進行訓練,訓練使用了python。所以系統環境需要配置好。

poYBAGKEwl6AQKHtAAAm8l7Gwow014.png

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

poYBAGKEwmyATvSEAABt9rLqLms536.png

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

pYYBAGKEwnmAX7M1AAB6AnakQhQ378.png

訓練好后,我們就得到了我們所需要的訓練文件。

poYBAGKEwoSAEKhsAABN9e09ki0029.png

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

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

poYBAGKEwpGASG9iAABFuJ2enWs396.png

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

pYYBAGKEwpyAFIqiAABEtCveTHg066.png

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

pYYBAGKEwqaAKh6yAAAsOzMnM4Y825.png

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

pYYBAGKEwriAHmWPAADzCEbAve8180.png

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

pYYBAGKEwsOAACWNAADJEkIMIyA546.png

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

pYYBAGKDbRWADoP6ABz9qHtm7fY289.gif

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

poYBAGKEwtaAEPbSAABSE9pWx4Y131.png

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

pYYBAGKEwuOAdM_0AABKUBgTxkQ268.pngpoYBAGKEwumAIlXbAABbm5btOrU794.png

審核編輯:符乾江

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 開發板
    +關注

    關注

    25

    文章

    5389

    瀏覽量

    101015
  • 人臉識別
    +關注

    關注

    76

    文章

    4054

    瀏覽量

    83408
收藏 人收藏

    評論

    相關推薦

    米爾-STM32MP257開發板試用體驗】初次體驗米爾-STM32MP257開發板

    。 這塊開發板的硬件平臺: 本文采用米爾電子的 MYC-LD25X核心開發板,硬件配置如下: 搭載意法半導體最新一代工業級64位微處理器STM32MP257DAK3 2G內
    發表于 04-30 16:21

    如何用OpenCV的相機捕捉視頻進行人臉檢測--基于米爾NXP i.MX93開發板

    本文將介紹基于米爾電子MYD-LMX93開發板米爾基于NXPi.MX93開發板)的基于OpenCV
    的頭像 發表于 04-15 11:51 ?191次閱讀
    如何用<b class='flag-5'>OpenCV</b>的相機捕捉視頻進行<b class='flag-5'>人臉</b>檢測--基于<b class='flag-5'>米爾</b>NXP i.MX93<b class='flag-5'>開發板</b>

    快速部署!米爾全志T527開發板OpenCV行人檢測方案指南

    本文將介紹基于米爾電子MYD-LT527開發板米爾基于全志T527開發板)的OpenCV行人檢測方案測試。摘自優秀創作者-小火苗 一、軟
    發表于 04-11 18:14

    OpenCV行人檢測應用方案--基于米爾全志T527開發板

    本文將介紹基于米爾電子MYD-LT527開發板米爾基于全志T527開發板)的OpenCV行人檢測方案測試。摘自優秀創作者-小火苗一、軟件環
    的頭像 發表于 04-10 08:03 ?461次閱讀
    <b class='flag-5'>OpenCV</b>行人檢測應用方案--基于<b class='flag-5'>米爾</b>全志T527<b class='flag-5'>開發板</b>

    iMX8MPlus SoC M7核心是否需要單獨的RAM內存?

    對于 iMX8MPlus SoC ,M7 核心是否需要單獨的 RAM 內存?或者是否有用于 M7內核的內部 SRAM?
    發表于 03-28 08:03

    iMX8MPlus DDR、Flash、eMMC可能的最大大小是多少?

    我想知道 iMX8MPlus 部分的 DDR、eMMC、SD 卡和閃存的最大可能大小MIMX8ML8DVNLZAB。
    發表于 03-28 06:20

    請問如何在imx8mplus上部署和運行YOLOv5訓練的模型?

    我正在從事 imx8mplus yocto 項目。我已經在自定義數據集上的 YOLOv5 上訓練了對象檢測模型。它在 ubuntu 電腦上運行良好?,F在我想在我的 imx8mplus
    發表于 03-25 07:23

    米爾RK3576開發板評測】+項目名稱值得購買的米爾RK3576開發板

    米爾依然是核心加擴展板的模式,我拿到手的開發板,核心已經通過LGA貼片,焊好了。 開發板做工很好,布線細致工整。 RK3576
    發表于 01-08 22:59

    人臉疲勞檢測應用-米爾基于RK3576核心/開發板

    本文將介紹基于米爾電子MYD-LR3576開發板米爾基于瑞芯微RK3576開發板)的人臉疲勞檢測方案測試。
    的頭像 發表于 12-20 08:06 ?687次閱讀
    <b class='flag-5'>人臉</b>疲勞檢測應用-<b class='flag-5'>米爾</b>基于RK3576核心<b class='flag-5'>板</b>/<b class='flag-5'>開發板</b>

    如何用OpenCV進行手勢識別--基于米爾全志T527開發板

    本文將介紹基于米爾電子MYD-LT527開發板米爾基于全志T527開發板)的OpenCV手勢識別
    的頭像 發表于 12-13 08:04 ?1130次閱讀
    如何用<b class='flag-5'>OpenCV</b>進行手勢<b class='flag-5'>識別</b>--基于<b class='flag-5'>米爾</b>全志T527<b class='flag-5'>開發板</b>

    FacenetPytorch人臉識別方案--基于米爾全志T527開發板

    本篇測評由電子工程世界的優秀測評者“小火苗”提供。本文將介紹基于米爾電子MYD-LT527開發板米爾基于全志T527開發板)的FacenetPytorch
    的頭像 發表于 11-28 15:12 ?654次閱讀
    FacenetPytorch<b class='flag-5'>人臉</b><b class='flag-5'>識別</b>方案--基于<b class='flag-5'>米爾</b>全志T527<b class='flag-5'>開發板</b>

    如何用OpenCV的相機捕捉視頻進行人臉檢測--基于米爾NXP i.MX93開發板

    本篇測評由優秀測評者“eefocus_3914144”提供。 本文將介紹基于米爾電子MYD-LMX93開發板米爾基于NXP i.MX93開發板)的基于
    發表于 11-15 17:58

    基于OPENCV的相機捕捉視頻進行人臉檢測--米爾NXP i.MX93開發板

    本文將介紹基于米爾電子MYD-LMX93開發板米爾基于NXPi.MX93開發板)的基于OpenCV
    的頭像 發表于 11-07 09:03 ?1354次閱讀
    基于<b class='flag-5'>OPENCV</b>的相機捕捉視頻進行<b class='flag-5'>人臉</b>檢測--<b class='flag-5'>米爾</b>NXP i.MX93<b class='flag-5'>開發板</b>

    米爾NXP i.MX 93開發板Qt開發指南

    1. 概述Qt 是一個跨平臺的圖形應用開發框架,被應用在不同尺寸設備和平臺上,同時提供不同版權版本供用戶選擇。米爾 NXP i.MX 93 開發板(MYD-LMX9X
    發表于 06-07 20:45

    米爾NXP i.MX 93開發板Qt開發指南

    1.概述Qt是一個跨平臺的圖形應用開發框架,被應用在不同尺寸設備和平臺上,同時提供不同版權版本供用戶選擇。米爾NXPi.MX93開發板(MYD-LMX9X
    的頭像 發表于 06-07 08:01 ?2057次閱讀
    <b class='flag-5'>米爾</b>NXP i.MX 93<b class='flag-5'>開發板</b>的<b class='flag-5'>Qt</b><b class='flag-5'>開發</b>指南
    主站蜘蛛池模板: 日本三级网站在线线观看 | 免费观看黄视频 | 天天色影综合网 | 国产精品午夜自在在线精品 | 亚洲美女精品 | 永久免费mv网站入口 | 免费一级毛毛片 | 九九九色| 国产手机免费视频 | 日本一区二区三区四区视频 | 在线亚洲小视频 | 免费人成在线观看网站品爱网日本 | 无遮挡很爽很污很黄的网站w | 黄色网址日本 | 欧美一级三级在线观看 | 欧美整片第一页 | 99久久99久久精品国产 | 精品在线一区二区 | 成人亚洲欧美 | 四虎影院中文字幕 | 夜夜穞狠狠穞 | 亚洲综合免费 | 色妇网| 六月婷婷在线视频 | 国模大尺度人体一区 | 亚洲视频一区网站 | 黄色福利网 | 日日摸夜夜添免费毛片小说 | 在线视频播放大全 | 国产一区在线播放 | 欧美三级黄 | 国产精品爱久久久久久久三级 | 三级网站在线 | 午夜视频在线免费看 | 欧美一级视频在线观看欧美 | 天天摸天天碰色综合网 | 日本免费黄网站 | 色五月丁香五月综合五月 | 美女教师一级毛片 | 亚洲丁香婷婷 | 久久精品视频热 |