视频关注23万!国产车规级处理器T507H平台上,用50行Python代码实现图传和人脸识别

描述

 

大家好,今天介绍的是我们的老朋友,基于全志T507-H处理器开发的MYD-YT507H开发板。本期视频已经在某站获得了23W+的播放(截至3月29日)。

 

本期的MYD-YT507H开发板应用操作由 VeriMake的实习生,来自帝国理工的同学完成。


MYD-YT507H开发板由米尔电子于2022年推出和销售,搭载了全志的车规级T507-H处理器,具有超高性能和丰富的外设资源,是优秀的国产工业CPU平台。

 

屏蔽罩下的是全志的T507-H处理器:

集成四核Cortex–A53,主频1.5GHz,符合汽车AEC-Q100测试要求;

 

支持4K视频编解码;

 

支持LVDS、HDMI、RGB以及CVBS四种显示输出接口;

 

支持双屏同显、双屏异显,支持MIPI CSI 、DVP摄像头输入;提供流畅的用户体验和专业的视觉效果。

 

搭载的1GB DDR4内存与8GB eMMC;

 

开发板拥有丰富的外设扩展:SD卡槽、持双路网口,4个USB2.0接口,1个SPI,2个SDIO;

工业级板卡的工作温度范围为-40℃ - +85℃;

 

核心板为邮票孔设计。

 

python

这款基于全志T507-H处理器开发的开发板及核心板,可广泛应用于电力物联网、汽车电子、商业显示、工业控制、医疗器械、智能终端等领域。

MYC-YT507H核心板及开发板的软件资料也非常丰富,包含但不限于U-boot、Linux、所有外设驱动源码和相关开发工具。文档资料包含产品手册、硬件用户手册、硬件设计指南、底板PDF原理图、Linux软件评估和开发指南等相关资料,能够有效帮助开发者提高开发效率、缩短开发周期,加快产品研发和上市时间。

接下来我们就用这块开发板做一个简单的基于图像传输的人脸识别小应用吧。这个案例全部用python开发,实际代码不超过50行,是比较好入门的。本次评测我们会尝试无线图传功能,并且叠加人脸识别检测视频中是否存在人脸。

这次测试使用的是USB摄像头,可以直接接在开发板的接口上。



 

01.

 

连接摄像头


 

连接好摄像头后使用指令dmesg,看到能读取到摄像头。显示为HIK 720p Camerapython

接下来使用v4l来检测相机的详细参数。

安装v4l:sudo apt install v4l-utils使用sudo v4l2-ctl --list-devices查看详细信息与设备号python

02.

 

使用OpenCV进行人脸识别


 

这里使用的识别程序借鉴了这个CSDN博主的代码https://blog.csdn.net/qianbin3200896/article/details/123643791

在开始之前,先安装几个库:

sudo apt update完成更新
sudo apt install python3-opencv
pip3 install --upgrade pip
pip3 install zmq
pip3 install pybase64

首先在开发板上运行如下程序,读取摄像头数据并将数据发送至PC。

python

  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  

import cv2import zmqimport base64
def main(): ''' 主函数 ''' IP = '192.168.2.240' #上位机视频接受端的IP地址
# 创建并设置视频捕获对象 cap = cv2.VideoCapture(0) print("open? {}".format(cap.isOpened())) cap.set(cv2.CAP_PROP_FRAME_WIDTH, 320) # 设置图像宽度 cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 240) # 设置图像高度
# 建立TCP通信协议 contest = zmq.Context() footage_socket = contest.socket(zmq.PAIR) footage_socket.connect('tcp://%s:5555'%IP)

接着需要在PC上接收开发板传来的信息,将视频分为一帧帧的内容分别存储和处理。当识别到人脸时会用红框圈出。

打开anaconda prompt运行如下内容

  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  

import cv2import zmqimport base64import numpy as np
def main(): ''' 主函数 ''' 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("监听中") frame = footage_socket.recv_string() #接收TCP传输过来的一帧视频图像数据 img = base64.b64decode(frame) #把数据进行base64解码后储存到内存img变量中 npimg = np.frombuffer(img, dtype=np.uint8) #把这段缓存解码成一维数组 source = cv2.imdecode(npimg, 1) #将一维数组解码为图像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()

正常工作时会一直print监听中。

python

此时可以在pc上弹出的窗口中看到摄像头画面,有人脸出现也能自动识别。不过存在一定的延迟。
 

python

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分