登录  |  注册
    当前位置:
  • 首页
  • >
  • >

奥比中光Zora P1开发板评测报告

博客小编 (126) 2024-05-14 23:01:01

1、开箱

Zora P1开发板的包装还是很精致的,除了开发板,还带了一个电源适配器和固定开发板的亚克力板配件。
奥比中光Zora P1开发板评测报告 (https://mushiming.com/)  第1张加上咸鱼淘的奥比Astra深度相机,我就开启了评测之旅~,深度相机长这样子,它除了可以输出RGB图像之外,还可以输出深度图,因此又被叫做RGB-D相机。
奥比中光Zora P1开发板评测报告 (https://mushiming.com/)  第2张
2、安装ubuntu系统,然后安装Astra SDK和openNI

Zora P1开发板自带的操作系统为armbian系统,因为之前用树莓派比较多,所以对raspian系统比较熟悉,armbian其实跟树莓派自带的Raspian系统很像。
另外,Zora P1开发板是arm架构的,因此,在下载SDK和各种软件的版本的时候要注意选择Linux Arm64版本的。

3、人脸识别,区分出是人脸图片还是真人

于二维图像来说,要想区分出真人还是人脸图片有很大的难度,准确性难以保证,之前就有拿人脸图片刷开快递柜的新闻出现。而深度相机可以很轻易地让人脸图片现出原形,准确性有可靠保证,对于安防、金融支付这些应用场景来说,深度相机有重要的应用价值。

人脸识别是基于python和OpenCV开发的,过程如流程图所示,用到了openCV中的Haar CascadeClassifier,也就是级联分类器去识别图像中的人脸特征。识别到人脸特征后,还不能确定是否是真正的人脸,因此选取从RGB图像中获得的潜在真正人脸区域,坐标映射到深度图像中,对深度图像中对应的ROI区域计算标准差,设置阈值便能将两者区分开来。因为人脸图片在深度图中各点的深度信息没有变化,标准差很小;而真正的人脸各点深度信息变化明显,标准差大。
奥比中光Zora P1开发板评测报告 (https://mushiming.com/)  第3张

奥比中光Zora P1开发板评测报告 (https://mushiming.com/)  第4张
ubuntu配置openCV依赖项可以按照这个:https://blog.csdn.net/weixin_44232093/article/details/98937652

除了OpenCV库,我还用到了numpy和openNI,需要pip安装,安装时换成国内的源可以大大加快安装速度,在用清华源pip安装的时候,我遇到因为ubuntu系统时间没调,时间有偏差,导致安装失败的情况,解决方法就是把系统时间调整为北京时间,这样就可以用清华源正常安装python库了。还有一个要注意的就是DNS要设置一下。

4、最后,我想用一下板子上的GPIO引脚

查阅了Zora P1开发板的说明文档,看到是有8个GPIO引脚的,与树莓派相比不是很多。我的想法是实现一个基于人脸深度信息获取的智能风扇,根据之前获得的人脸深度信息,与调节风扇转速的模拟量值建立关系,实现人脸靠近时风速大,远离时风速小的效果。
奥比中光Zora P1开发板评测报告 (https://mushiming.com/)  第5张
于是,我便查阅了Linux通过指令控制GPIO的相关内容,操作步骤如下:

(1)定义GPIO:/sys/class/gpio# echo 1 > export,定义好之后在/sys/class/gpio路径下会生成gpio1文件夹。

(2)设置输入/输出:/sys/class/gpio/gpio1# echo out > direction

(3)设置输出值:/sys/class/gpio/gpio1#

echo 1 > value

这里也遇到一个问题,我理所当然的认为8个gpio口对应的编号便是1~8,其实不然,这就导致我定义GPIO是失败的。事实上,Zora P1的GPIO编号应该是在410-495和496-511这两个范围内,但具体的各个引脚软硬件映射关系说明文档没有提供,希望后面能发布出来。
奥比中光Zora P1开发板评测报告 (https://mushiming.com/)  第6张
附python代码:

from openni import openni2 
	import numpy as np 
	import cv2 

def mousecallback(event,x,y,flags,param): 
	    if event==cv2.EVENT_LBUTTONDBLCLK: 
	        print(y, x, dpt[y,x]) 
	  
if __name__ == "__main__": 

 openni2.initialize() 

 dev = openni2.Device.open_any() 
print(dev.get_device_info()) 

 depth_stream = 	dev.create_depth_stream() 
 depth_stream.start() 

 cap = cv2.VideoCapture(0) 
cv2.namedWindow('depth') 
 cv2.setMouseCallback('depth',mousecallback) 
 face_detector = 	cv2.CascadeClassifier("/home/orbbec/haarcascade_frontalface_default.xml") 
	   while True: 

 frame = depth_stream.read_frame() 
	       dframe_data = 	np.array(frame.get_buffer_as_triplet()).reshape([480, 640, 2]) 
	       dpt1 = np.asarray(dframe_data[:, :, 0], dtype='float32') 
	       dpt2 = np.asarray(dframe_data[:, :, 1], dtype='float32') 
	        
dpt2 *= 255 
 dpt = dpt1 + dpt2 
 cv2.imshow('depth', dpt) 
	        
 #print(dpt.shape) 
	       ret,frame = cap.read() 
	       img=cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY) 
	face_rects=face_detector.detectMultiScale(img, 1.3, 5) 
	       for(x,y,w,h) in face_rects: 
	        cv2.rectangle(frame,(x,y),(x+w,y+h),(0,255,0),3) 
	        face_dpt=dpt[y:y+h,640-(x+w):640-x]                                 ##the depth image and the frame are horizontal symmetry 
	        
  ##calculate the standard deviation 
	        (mean,stddev)=cv2.meanStdDev(face_dpt) 
	        #print(stddev) 
	        
  ##Set threshold to recognize person true or not 
	        if stddev>300: 
	           cv2.rectangle(frame,(x,y),(x+w,y+h),(0,255,0),3) 
	           cv2.putText(frame,"Real Person",(x,y-5),cv2.FONT_HERSHEY_SIMPLEX,1,(0,255,0),2) 
	        else: 
	           cv2.rectangle(frame,(x,y),(x+w,y+h),(0,0,255),3) 
	           cv2.putText(frame,"It's picture!",(x,y-5),cv2.FONT_HERSHEY_SIMPLEX,1,(0,0,255),2) 
	        #if w > 0: 
	        # cv2.imshow('face_dpt', face_dpt) 
	      
 cv2.imshow('color', frame) 
	       #print(frame.shape) 
	       key = cv2.waitKey(1) 
	       if int(key) == ord('q'): 
	           break 
	            
 depth_stream.stop() 
	   dev.close() 

备注:
点击下面链接,进入奥比中光开发者社区,了解更多3D视觉技术信息:
https://developer.orbbec.com.cn/

或扫描下方二维码,进入奥比中光开发者社区:
奥比中光Zora P1开发板评测报告 (https://mushiming.com/)  第7张

THE END

HDLBits(八)学习笔记——Counters(计数器)

京东应急物资供应链管理平台_京东智慧供应链

vivadoltx文件_tcl脚本语言

什么是覆盖方法_表格怎么覆盖相同内容

推 荐 文 章

Oracle的学习心得和知识总结(六)|Oracle数据库同义词技术详解

  • 碳排放项目有哪些_碳排放项目有哪些
  • 文案要怎么写才能吸引人_推广文案范例
  • 计算机键盘的字母顺序_电脑键盘运用技巧
  • 论软件开发过程RUP及其应用
  • 优缺点 快速扫描 硬盘监测_用硬盘检测工具检测硬盘超实用的技巧!
  • 包围体的是什么_正垂面与圆球体表面相交
  • oka文件专家 Android,oka解压专家怎么用 oka解压专家使用教程
  • rust 函数_rust调用c++库
  • 网络号 IP地址 子网掩码如何计算

发表回复

热门文章

更多>
  • 移动云主机是什么,有什么用_云服务器ecs什么意思
  • 经验分享:半桥电路的工作原理及注意问题
  • 【经验分享】一文了解解决大位宽效率问题的分段总线的前世今生
  • 博客迁移告知书
  • nginx简单的分布式部署方案
  • 分布式数据库与集中式数据库的差异
  • Linux如何实现分布式部署
  • 服务器分布式部署和集群部署的区别
  • 分布式体系结构:集中式结构
  • 3、分布式部署
  • 分布式项目部署方案
  • 分布式系统容灾部署方案
  • Redis的分布式部署
  • 集中式 vs. 分布式系统架构
  • 多台服务器集群部署方案

推荐文章

更多>
  • 【Mo 人工智能技术博客】浅谈多任务与联邦学习
  • JAVA数组去重方法
  • JavaScript两种数组去重方法
  • js数组去重方法 总结
  • 三种常用的js数组去重方法
  • 最常用的数组去重方法
  • javaScript数组去重方法
  • Python处理数组去重方法
  • JS实现数组去重方法总结(六种方法)
  • js中常见数组去重方法 && 当数组中每项为obj时,数组去重方法

玻璃钢生产厂家余杭区商场美陈布置商场美陈道具设计嘉定区进口玻璃钢雕塑多少钱福建玻璃钢卡通雕塑规格石家庄玻璃钢雕塑厂玻璃钢门头雕塑定制玻璃钢园林雕塑电话通山玻璃钢花盆花器景区玻璃钢卡通雕塑厂家玻璃钢动物造型雕塑报价湖北创意玻璃钢雕塑批发郑州小品系列玻璃钢雕塑定做甘肃玻璃钢智能雕塑邯郸玻璃钢卡通雕塑厂家供应呈贡玻璃钢雕塑产品厂家咨询苏州玻璃钢仿铜雕塑制作小区玻璃钢雕塑零售万宁玻璃钢卡通雕塑丽水玻璃钢人物雕塑倒水的玻璃钢雕塑新乡价值观校园玻璃钢景观雕塑玻璃钢雕塑定做哪家公司好郑州玻璃钢雕塑厂澄海玻璃钢雕塑厂家鹰潭公园玻璃钢雕塑设计益阳玻璃钢卡通雕塑玻璃钢红军雕塑售价菏泽景观园林校园玻璃钢雕塑西昌玻璃钢彩绘雕塑露天商场美陈创意香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化