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

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

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

3天內不再提示

項目分享|基于ELF 1開發板的遠程監測及人臉識別項目

ElfBoard ? 2024-03-13 16:41 ? 次閱讀

今天非常榮幸地向各位小伙伴分享一個由共創社成員完成的遠程監測及人臉識別項目,該項目依托ELF 1開發板為核心硬件平臺,構建了一套完整的視頻監控系統,并在此基礎上集成了人臉識別功能。接下來,就為各位小伙伴詳盡展示這一項目的相關細節。

項目實現步驟

1.視頻監控

這一步驟中需要實現兩個程序:

(1)在連接攝像頭的ELF 1開發板上實現一個服務器程序:它一邊讀取攝像頭數據,一邊等待客戶端連接并發送數據。可以用兩個線程實現,一個負責采集圖像信息;一個負責等待鏈接,并發送數據。

(2)在手機電腦上,編寫客戶端程序,它會從ELF 1開發板上獲得數據并顯示出來。同樣,也可以用兩個線程來實現。一個負責接受數據,一個負責顯示數據。這2個程序之間,并不需要實現復雜的協議。

MJPG‐streamer是一個開源軟件。MJPG-streamer從Linux UVC兼容的網絡攝像頭、文件系統或其他輸入插件獲取JPG,并通過HTTP、RTSP、UDP等將其作為M-JPEG流式傳輸到WebBrowser、VLC和其他軟件。

MJPG-streamer 需要很少的CPU和內存資源就可以工作,大部分編碼工作都是攝像頭完成的,所以對于內存和性能都有限的嵌入式系統十分適用。

將MJPG-streamer移植并運行在ARM板上,在同一局域網內的設備輸入正確的ip地址即可直接觀看到視頻畫面。對ARM板的性能要求不高,主頻200MHz的ARM芯片也能實現。

下載MJPG-streamer:

git clone https://github.com/shrkey/mjpg-streamer

啟動MJPG-streamer后,輸入ip地址以及端口號即可看到攝像頭內容如下圖:

wKgaomXxZX2AHZ8CAAdzp1_venQ147.png

同時后續人臉識別功能中需要能夠從視屏流中提取出照片,需要修改MJPG-streamer源碼,使其支持拍照功能。具體修改如下:

修改完成之后只要向有名管道/tmp/webcom寫入相應的字符串就能實現拍照功能。

# cd mjpg-streamer-rc63/plugins/output_file # vim output_file.c //在96行 函數 void*worker_thread(void *arg) 體中加入以下代碼: charbuf[10]; // intflags = 0; // intfd_com = 0; //打開管道 stop_num = 0; //拍照計數 if ( access(“/tmp/webcom”,F_OK) < 0 ) //創建有名管道用于接收拍照命令 { if ( mkfifo(“/tmp/webcom”,0666 ) < 0) { Printf(“ photo fifo create failed\n”); } } fd_com = open (“/tmp/webcom”,O_RDONLY,0666); if (fd < 0) { perror (“open the file webcom error”); } //在while( ok >= 0 && !pglobal->stop){ 后加入 if (flags == 0) { while(1) { reade(fd_com,buf,sizeof(buf)); if(strncmp(buf,”danger”,6) == 0) //拍11張照片 { flags = 1; bzero(buf,sizeof(buf)); break; } if(strncmp(buf,”one”,3) == 0) //拍1張照片 { flags = 2; bzero(buf,sizeof(buf)); break; } } } //在if (delay > 0){ usleep(1000*delay); }后加入 stop_num++ if(flags == 1) //判斷拍照的數量 { if ( stop_num > 9) { stop_num= 0; flsgs= 0; } } elseif (flags == 2) { stop_num= 0; flags= 0; }

2.人臉檢測

'haarcascade_frontalface_default.xml'是Opencv中已經訓練好的人臉分類器文件。它是基于Haar特征的級聯分類器,可以用于檢測正面的人臉。該文件是通過大量的正負樣本訓練而成,可以用于人臉檢測的應用中。具體調用代碼如下:

#! user/bin/python #- * -coding:UTF-8 - * - import cv2 import numpy as np def myfilter(img): # 圖像轉化為灰度格式 gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) # 導入人臉級聯分類器引擎,'xml'文件包含訓練好的人臉特征 face_cascade=cv2.CascadeClassifier(' \ /home/xuyang/test1/haarcascade_frontalface_default.xml') #為防止報錯使用該文件在opencv下的絕對路徑 # 用人臉級聯分類器引擎進行人臉識別,返回的faces為人臉坐標列表 faces = face_cascade.detectMultiScale(gray) return faces def myfaces_count(img,faces): count = 0 #人臉計數初值 # 對每張臉,操作如下 for (x,y,w,h) in faces: '''畫矩形圈出人臉 輸入參數依次為:圖片,右上角的點坐標,矩形大小,線條顏色,寬度 ''' cv2.rectangle(img,(x,y),(x+w,y+h),(255,255,255),2) count += 1 # 累計人數 # 把統計人數顯示出來 cv2.putText(img,'{}'.format(count),(x,y-7),3,1.2,(0,0,255),2) return img #打開mjpg-streamer視頻流(通過URL) #cap = cv2.VideoCapture('http://192.168.106.128:8080/?action=stream') #打開視頻 cap = cv2.VideoCapture('video.mp4') y = 0 #獲取視頻相關數據以便于保存視頻 width = int(cap.get(3)) height = int(cap.get(4)) fps = cap.get(5) fourcc = cv2.VideoWriter_fourcc(*'MJPG') output_file = 'output_video.mp4' video_writer = cv2.VideoWriter(output_file,fourcc,fps,(width,height),isColor = True) while True: # 讀取每一幀圖像 ret, frame = cap.read() if not ret: break if y == 0: faces = myfilter(frame) #人臉識別特征每10次循環做一次 不然運行速度太慢了 y = y + 1 if y == 10: y =0 frame = myfaces_count(frame,faces) # 在窗口上顯示當前幀的圖像 cv2.imshow("Frame", frame) video_writer.write(frame) #保存視頻 # 按下 'q' 退出循環 if cv2.waitKey(1) & 0xFF == ord('q'): break # 關閉所有窗口及釋放對象 cap.release() video_writer.release() cv2.destroyAllWindows()

3.人臉識別

鑒于開發板運行人臉檢測模型已經有一定的運算壓力,同時為了豐富項目內容,人臉識別部分我們通過傳送照片在云端完成。

本文通過libcurl庫調用云端API實現人臉識別。需要libcurl庫支持https協議。要讓LibCurl庫支持https協議實現人臉識別,就需要安裝移植Openssl這個庫。此篇人臉識別介紹主要目的是判斷兩張人臉圖片的相似程度或者接近程度。安裝移植LibCurl庫和Openssl庫不多贅述。

首先是注冊一個OCR云識別平臺賬號如圖:

wKgZomXxZfaAeh-AAAEHOC4OGxA671.png

詢對應平臺的API和接口地址:

wKgaomXxZhSARgfgAARfyoy2h9Q860.png

下面是調用人臉識別API的代碼

#include #include #include #include #include #include #include #include #include typedef unsigned int bool; #define true 1 #define false 0 char buf[1024]={'\0'}; size_t readData(void *ptr, size_t size, size_t nmemb, void *stream) { strncpy(buf,ptr,1024); } char* getPic(char *pic) { char cmd[128]={'\0'}; memset(cmd,'\0',128); sprintf(cmd,"base64 %s > tmpFile",pic); system(cmd); int fd = open("./tmpFile",O_RDWR); int filelen = lseek(fd,0,SEEK_END); lseek(fd,0,SEEK_SET); char *base64Buf = (char*)malloc(filelen + 8); memset(base64Buf,'\0',filelen + 8); read(fd,base64Buf,filelen+8); close(fd); system("rm -f tmpFile"); return base64Buf; } bool postUrl()//POST請求 { char buf1[1024] = {0},buf2[1024] = {0}; unsigned long long counter = 0; static char *folder = "/tmp"; time_t t; struct tm *now; t = time(NULL); now = localtime(&t); system("echo one > /tmp/webcom"); //向有名管道webcom寫入字符串實現拍照 strftime(buf1, sizeof(buf1), "%%s/%Y_%m_%d_%H_%M_%S_picture_%%09llu.jpg", now); snprintf(buf2, sizeof(buf2), buf1,"/tmp", counter); sleep(1); CURL *curl; CURLcode res; char *postString = NULL; char *base64Buf1 = getPic(buf2); char *base64Buf2 = getPic("./me5.jpg"); char *key = "xxxxxxxxxxxxxxxxxxxxxxx"; char *secret = "xxxxxxxxxxxxxxxxxxxxxxx"; int typeld = 21; char *format = "xml"; int len = strlen(key)+strlen(secret)+strlen(format)+ \ strlen(base64Buf1)+strlen(base64Buf2)+128; printf("%d",len); postString = (char *)malloc(len); sprintf(postString,"img1=%s&img2=%s&key=%s&secret=%s&typeId=%d&format=%s",\ base64Buf1,base64Buf2,key,secret,typeld,format); curl = curl_easy_init(); if (curl) { curl_easy_setopt(curl, CURLOPT_COOKIEFILE, "/tmp/cookie.txt"); // 指定cookie文件 curl_easy_setopt(curl, CURLOPT_POSTFIELDS, postString); // 指定post內容 curl_easy_setopt(curl, CURLOPT_URL, "https://netocr.com/api/faceliu.do"); //指定url curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, readData); res = curl_easy_perform(curl);//執行 //printf("res = %d\n",res); if(strstr(buf,"是")!=NULL) { printf("is same people\n"); } else { printf("not the same people\n"); } curl_easy_cleanup(curl); } return true; } int main(void) { postUrl(); }

本項目的工作流程設計邏輯是,首先系統啟動視頻監控機制,智能判斷畫面中是否存在人臉;一旦檢測到人臉,則觸發拍照動作,然后通過調用云端API進行人臉識別對比并返回結果,上述視頻的對比結果如下:

wKgZomXxZk-Ae-nBAAVrvxL1zDQ043.png

左圖為提前準備好的相關人臉的照片,右圖為拍照得到的照片,下面為對比結果判定為是同一個人。同時開發板返回結果也正確:

wKgZomXxZniAO-gjAAHxpbDUyN0544.png

至此,關于基于ELF 1開發板實現的遠程監測及人臉識別項目的介紹告一段落。衷心期待這項案例能夠對正在鉆研嵌入式開發的小伙伴帶來啟示與借鑒,助力各位的學習之旅。

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

    關注

    5125

    文章

    19438

    瀏覽量

    312996
  • Linux
    +關注

    關注

    87

    文章

    11420

    瀏覽量

    212298
  • 遠程監測
    +關注

    關注

    0

    文章

    155

    瀏覽量

    18521
  • 開發板
    +關注

    關注

    25

    文章

    5389

    瀏覽量

    100796
  • 人臉識別
    +關注

    關注

    76

    文章

    4054

    瀏覽量

    83355
收藏 人收藏

    評論

    相關推薦

    來自資深工程師對ELF 2開發板的產品測評

    來自資深工程師對ELF 2開發板的使用測評
    的頭像 發表于 04-28 15:03 ?380次閱讀
    來自資深工程師對<b class='flag-5'>ELF</b> 2<b class='flag-5'>開發板</b>的產品測評

    基于RV1126開發板實現人臉識別方案

    在RV1126開發板上實現人臉識別:在圖像中找出人臉,并與數據庫進行比對,得出該人臉對應的身份信息。 方案設計邏輯流程圖,方案
    的頭像 發表于 04-21 10:24 ?107次閱讀
    基于RV1126<b class='flag-5'>開發板</b>實現<b class='flag-5'>人臉</b><b class='flag-5'>識別</b>方案

    如何在米爾-STM32MP257開發板上實現環境監測系統

    本文將介紹基于米爾電子MYD-LD25X開發板(米爾基于STM35MP257開發板)的環境監測系統方案測試。摘自優秀創作者-lugl4313820一、前言環境監測是當前很多場景需要的
    的頭像 發表于 04-17 08:06 ?1080次閱讀
    如何在米爾-STM32MP257<b class='flag-5'>開發板</b>上實現環境<b class='flag-5'>監測</b>系統

    ElfBoard技術貼|如何在ELF 1開發板上交叉移植Qt

    在嵌入式系統開發領域,針對特定硬件平臺進行Qt框架的移植與適配是一項關鍵技術任務。作為業界主流的跨平臺應用開發框架,Qt憑借其完善的圖形界面支持能力,在嵌入式開發圖形界面應用程序中占據重要地位。本文將基于
    的頭像 發表于 02-24 16:18 ?427次閱讀
    ElfBoard技術貼|如何在<b class='flag-5'>ELF</b> <b class='flag-5'>1</b><b class='flag-5'>開發板</b>上交叉移植Qt

    ElfBoard開源項目|百度智能云平臺的人臉識別項目

    百度智能云平臺的人臉識別項目,旨在利用其強大的人臉識別服務實現自動人臉識別。選擇百度智能云的原因
    的頭像 發表于 12-24 10:54 ?1039次閱讀
    ElfBoard開源<b class='flag-5'>項目</b>|百度智能云平臺的<b class='flag-5'>人臉</b><b class='flag-5'>識別項目</b>

    【實戰】人工智能0基礎入門:基于Python+OpenCV的車牌識別項目(課程+平臺實踐)

    01引言隨著智能交通系統的發展,車牌識別技術在車輛管理、交通監控、停車收費等多個領域發揮著重要作用。接下來小編將帶你深入了解車牌識別項目的全流程,從理論基礎到實際應用,讓你掌握如何構建一個高效、準確
    的頭像 發表于 12-16 10:43 ?628次閱讀
    【實戰】人工智能0基礎入門:基于Python+OpenCV的車牌<b class='flag-5'>識別項目</b>(課程+平臺實踐)

    ElfBoard開源項目|車牌識別項目技術文檔

    車牌識別項目基于百度智能云平臺,旨在利用其強大的OCR服務實現車牌號碼的自動識別。選擇百度智能云的原因是其高效的API接口和穩定的服務質量,能夠幫助開發者快速實現車牌識別應用。這個開源
    的頭像 發表于 12-06 10:30 ?503次閱讀
    ElfBoard開源<b class='flag-5'>項目</b>|車牌<b class='flag-5'>識別項目</b>技術文檔

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

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

    如何在NXP源碼基礎上適配ELF 1開發板的PWM功能

    本次源碼適配項目是在NXP i.MX6ULL EVK評估所搭載的Linux內核源碼(版本為Linux-imx_4.1.15)基礎上進行的,主要目標是通過調整功能接口引腳配置,使其適應ELF
    的頭像 發表于 09-10 10:00 ?1098次閱讀
    如何在NXP源碼基礎上適配<b class='flag-5'>ELF</b> <b class='flag-5'>1</b><b class='flag-5'>開發板</b>的PWM功能

    ElfBoard技術貼|如何在ELF 1開發板上搭建流媒體服務器

    流媒體服務器是一種專門用于傳輸實時數據流的服務器軟件,廣泛用于視頻直播、視頻會議、音頻播放等應用場景。在嵌入式開發領域,將流媒體服務器部署到開發板上可以實現諸如視頻監控、實時數據傳輸等功能。本文將介紹如何利用nginx和其rtmp流媒體模塊,在
    的頭像 發表于 08-20 14:48 ?781次閱讀
    ElfBoard技術貼|如何在<b class='flag-5'>ELF</b> <b class='flag-5'>1</b><b class='flag-5'>開發板</b>上搭建流媒體服務器

    數量有限:6款“入門+項目進階”開發板限時特惠!30余套項目案例免費領!

    ?華清遠見研發中心,面向個人學習、學生畢設、高校教學,精心打造六款“入門+項目進階”開發板。這六款開發板,面向嵌入式、物聯網方向的學習,均配套了豐富的學習資料及綜合項目實戰案例。后臺私
    的頭像 發表于 08-20 14:17 ?563次閱讀
    數量有限:6款“入門+<b class='flag-5'>項目</b>進階”<b class='flag-5'>開發板</b>限時特惠!30余套<b class='flag-5'>項目</b>案例免費領!

    ElfBoard技術貼|在NXP源碼基礎上適配ELF 1開發板的按鍵功能

    本次源碼適配工作是在NXPi.MX6ULLEVK評估的Linux內核源碼(特定版本:Linux-imx_4.1.15)基礎上進行的。主要目標是調整功能接口引腳配置,以適應ELF1開發板。接下來
    的頭像 發表于 07-10 09:54 ?805次閱讀
    ElfBoard技術貼|在NXP源碼基礎上適配<b class='flag-5'>ELF</b> <b class='flag-5'>1</b><b class='flag-5'>開發板</b>的按鍵功能

    嵌入式學習-飛凌嵌入式ElfBoard-項目分享|基于ELF 1S開發板完成的物聯網開源項目

    工程師借助ELF 1S開發板完成的嵌入式物聯網項目,見證智慧與技術的火花。 關于這個項目的思維導圖,如下圖所示: 接下來,將會從云-網-邊-
    發表于 05-16 09:19

    飛凌嵌入式-ElfBoard-項目分享|基于ELF 1S開發板完成的物聯網開源項目

    工程師借助ELF 1S開發板完成的嵌入式物聯網項目,見證智慧與技術的火花。 關于這個項目的思維導圖,如下圖所示: 接下來,將會從云-網-邊-
    發表于 05-16 09:12

    項目分享|基于ELF 1S開發板完成的物聯網開源項目

    ElfBoard作為飛凌嵌入式旗下教育品牌,自成立以來,持續吸引著各界的矚目,其中也贏得了一些工程師的青睞。今天,就和各位小伙伴分享一位杰出工程師借助ELF1S開發板完成的嵌入式物聯網項目,見證智慧
    的頭像 發表于 05-14 09:03 ?1574次閱讀
    <b class='flag-5'>項目</b>分享|基于<b class='flag-5'>ELF</b> <b class='flag-5'>1</b>S<b class='flag-5'>開發板</b>完成的物聯網開源<b class='flag-5'>項目</b>
    主站蜘蛛池模板: 色秀视频免费网站在线观看 | 美女被免费视频的网站 | 四虎影院免费在线 | 中文字幕一区二区在线观看 | 第四色激情 | yy肉戏多纯黄的小说 | 国产在线h | 午夜欧美日韩 | 热re99久久精品国产99热 | wwwwww日本| 97午夜精品 | 在线播放网址 | 狠狠色丁香婷婷综合视频 | 六月综合网 | 天天在线天天在线天天影视 | 免费视频在线看 | 日本视频黄色 | 人人洗澡人人洗澡人人 | 久久大尺度 | 亚洲国产一区二区三区在线观看 | 狠狠操夜夜爽 | 亚洲婷婷综合网 | 日日爽夜夜 | 欧美高清一区二区 | 国产xxxx极品bbw视色 | 亚洲福利一区二区 | 久久精品免费观看久久 | 最近最新中文字幕在线第一页 | 丁香婷婷综合五月综合色啪 | 手机看片久久青草福利盒子 | 免费观看一级一片 | 福利视频一区二区牛牛 | 亚洲一级毛片中文字幕 | 欧美一区二区视频三区 | 日本在线视频www色 日本在线视频精品 | 国产黄色小视频网站 | 成人亚洲视频 | 日本黄页在线观看 | 午夜国产精品理论片久久影院 | 正在播放国产乱子伦视频 | 又粗又硬又爽又黄毛片 |