米爾國(guó)產(chǎn)T507-H開發(fā)板,用50行Python代碼實(shí)現(xiàn)圖傳和人臉識(shí)別
基于國(guó)產(chǎn)車規(guī)級(jí)處理器T507-H開發(fā)平臺(tái),如何用50行Python代碼實(shí)現(xiàn)圖傳和人臉識(shí)別?
本文引用地址:http://butianyuan.cn/article/202303/445162.htm我們?cè)诿谞枃?guó)產(chǎn)T507-H車規(guī)級(jí)處理器的開發(fā)板上嘗試無(wú)線圖傳功能,并且疊加人臉識(shí)別檢測(cè)視頻中是否存在人臉。這次使用的是USB攝像頭,可以直接接在開發(fā)板的接口上。
1.連接攝像頭
連接好攝像頭后使用指令dmesg,看到能讀取到攝像頭。顯示為HIK 720p Camera
接下來(lái)使用v4l來(lái)檢測(cè)相機(jī)的詳細(xì)參數(shù)。
安裝v4l:sudo apt install v4l-utils
使用sudo v4l2-ctl --list-devices查看詳細(xì)信息與設(shè)備號(hào)
2.使用OpenCV進(jìn)行人臉識(shí)別
這里使用的識(shí)別程序借鑒了這個(gè)CSDN博主的代碼https://blog.csdn.net/qianbin3200896/article/details/123643791
在開始之前,先安裝幾個(gè)依賴。
sudo apt update完成更新
sudo apt install python3-opencv
pip3 install --upgrade pip
pip3 install zmq
pip3 install pybase64
首先在開發(fā)板上運(yùn)行如下程序,讀取攝像頭數(shù)據(jù)并將數(shù)據(jù)發(fā)送至PC。
import cv2
import zmq
import base64
def main():
'''
主函數(shù)
'''
IP = '192.168.2.240' #上位機(jī)視頻接受端的IP地址
# 創(chuàng)建并設(shè)置視頻捕獲對(duì)象
cap = cv2.VideoCapture(0)
print("open? {}".format(cap.isOpened()))
cap.set(cv2.CAP_PROP_FRAME_WIDTH, 320) # 設(shè)置圖像寬度
cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 240) # 設(shè)置圖像高度
# 建立TCP通信協(xié)議
contest = zmq.Context()
footage_socket = contest.socket(zmq.PAIR)
footage_socket.connect('tcp://%s:5555'%IP)
接著需要在PC上接收開發(fā)板傳來(lái)的信息,將視頻分為一幀幀的內(nèi)容分別存儲(chǔ)和處理。當(dāng)識(shí)別到人臉時(shí)會(huì)用紅框圈出。
打開anaconda prompt運(yùn)行如下內(nèi)容
import cv2
import zmq
import base64
import numpy as np
def main():
'''
主函數(shù)
'''
context = zmq.Context()
footage_socket = context.socket(zmq.PAIR)
footage_socket.bind('tcp://*:5555')
cv2.namedWindow('Stream',flags=cv2.WINDOW_NORMAL | cv2.WINDOW_KEEPRATIO)
while True:
print("監(jiān)聽中")
frame = footage_socket.recv_string() #接收TCP傳輸過(guò)來(lái)的一幀視頻圖像數(shù)據(jù)
img = base64.b64decode(frame) #把數(shù)據(jù)進(jìn)行base64解碼后儲(chǔ)存到內(nèi)存img變量中
npimg = np.frombuffer(img, dtype=np.uint8) #把這段緩存解碼成一維數(shù)組
source = cv2.imdecode(npimg, 1) #將一維數(shù)組解碼為圖像source
# img=cv2.imread('1.png',1)
grayimg = cv2.cvtColor(source, cv2.COLOR_BGR2GRAY)
face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
faces = face_cascade.detectMultiScale(grayimg, 1.2, 5)
for (x, y, w, h) in faces:
cv2.rectangle(source, (x, y), (x + w, y + h), (0, 0, 255), 2)
cv2.imshow('frame', source)
if cv2.waitKey(1) == ord('q'):
capture.release()
break
if __name__ == '__main__':
'''
程序入口
'''
main()
正常工作時(shí)會(huì)一直print監(jiān)聽中。
此時(shí)可以在pc上彈出的窗口中看到攝像頭畫面,有人臉出現(xiàn)也能自動(dòng)識(shí)別。不過(guò)存在一定的延遲。
MYD-YT507H開發(fā)板由米爾電子于2022年推出和銷售,搭載了全志的車規(guī)級(jí)T507-H處理器,具有超高性能和豐富的外設(shè)資源,是優(yōu)秀的國(guó)產(chǎn)工業(yè)CPU平臺(tái)。屏蔽罩下的是全志的T507-H處理器:
米爾MYD-YT507H開發(fā)板
■ 集成四核Cortex–A53,主頻1.5GHz,符合汽車AEC-Q100測(cè)試要求;
■ 支持4K視頻編解碼;
■ 支持LVDS、HDMI、RGB以及CVBS四種顯示輸出接口;
■ 支持雙屏同顯、雙屏異顯,支持MIPI CSI 、DVP攝像頭輸入;提供流暢的用戶體驗(yàn)和專業(yè)的視覺(jué)效果。
■ 搭載的1GB DDR4內(nèi)存與8GB eMMC;
■ 開發(fā)板擁有豐富的外設(shè)擴(kuò)展:SD卡槽、持雙路網(wǎng)口,4個(gè)USB2.0接口,1個(gè)SPI,2個(gè)SDIO;
■ 工業(yè)級(jí)板卡的工作溫度范圍為-40℃ - +85℃;
■ 核心板為郵票孔設(shè)計(jì)。
米爾電子,是一家專注于嵌入式處理器模組設(shè)計(jì)研發(fā)、生產(chǎn)、銷售于一體的高新技術(shù)企業(yè)。米爾電子在嵌入式處理器領(lǐng)域具有10多年的研發(fā)經(jīng)驗(yàn),為客戶提供基于ARM架構(gòu)、FPGA架構(gòu)的CPU模組及充電控制系統(tǒng)等產(chǎn)品和服務(wù);為智能醫(yī)療、智能交通、智能安防、物聯(lián)網(wǎng)、邊緣計(jì)算、工業(yè)網(wǎng)關(guān)、人工智能等行業(yè)客戶,提供定制解決方案和OEM服務(wù)。公司通過(guò)專業(yè)高效的服務(wù)幫助客戶加速產(chǎn)品上市進(jìn)程,目前已為行業(yè)內(nèi)10000家以上的企業(yè)客戶服務(wù)。
評(píng)論