如何解决USB双目同步摄像头的读取问题呢?

描述

这不是被甲方催的没办法了,快死桌子上面了。这样的同步大模组在眼动里面用不了。

文章主要解决双目摄像头的读取问题,代码我忘了加,但是给了关键代码。

ESP32

要这样设计

ESP32

俩个摄像头现在用来做

两个摄像头的问题是不好处理图像,如果读取出错就是一个摄像头的图像。

这个摄像头如果使用以前的代码来读取,就可以读到一个摄像头的图像。但是使用Potplayer就可以读到多个。

ESP32

两个

ESP32

可以看到是2560x720

ESP32

可以看到是合理的

ESP32

640x472,这个分辨率就是一个画面

ESP32

1280x480

问题在于,两个摄像头其实是共用一个ID的,打开一次设备就行。双目摄像头的总分辨率由两个摄像头组成的。

ESP32

一般是左上为原点

ESP32

一个示意图就是这样

ESP32

写出对图像划分的代码

left_frame = frame[0:480, 0:640]: 这行代码将原始帧(假设分辨率为1280x480)裁剪为左半部分。

这里的裁剪坐标[0:480, 0:640]表示从原始帧中取出前480行和前640列的像素,即左半部分的640x480图像。

right_frame = frame[0:480, 640:1280]: 这行代码将原始帧裁剪为右半部分。

裁剪坐标[0:480, 640:1280]表示取出前480行和第640列到第1280列的像素,即右半部分的640x480图像。

ESP32

可以写成函数

ESP32

这样调用

ESP32

函数的参数再加一个

split_frame函数现在接受一个split_x参数,这个参数决定了帧应该在哪个水平位置被分割。

当你调用split_frame(frame, 640)时,它会在640像素点处将帧分割为左右两部分。

这样的设计让你可以根据需要调整分割位置,使函数更加通用。

ESP32

成功

ESP32

这个是对图像进行缩放,这里是往小搞

ESP32

接着是把两个散的图像拼接在一起

  ESP32

如图所示

ESP32

对于人眼来说,可能可以在近一些,这里是使用的3.6mm的镜头

ESP32

这个QtPy不咋会用

ESP32

写了一个简单的GUI

ESP32

但是问题是检测到的太多了,这里就是简单的拟合了一下,可以看到实时的检测圆的问题是圆太多了。

ESP32

这里就写了一个先找到脸再识别眼睛,效果好不少

为了不影响惨淡的阅读量就不放我自己了

ESP32

这次加装了人脸识别框,来说明我的程序工作正常

别骂了

ESP32

豁出去了,眼睛直接打开

ESP32

可以看到在加装圆纸捅好一些

ESP32

这个是加了一些高斯模糊后的拟合,可以看到效果好不少

ESP32

昨天找到了这个项目,这个项目合适,马上就使用这个

ESP32

这个是ESP32-CAM+恒流源,因为要点亮红外灯

ESP32

一圈灯光,一个摄像头,分辨率很低

ESP32

完整效果

ESP32

对称

ESP32

这个眼动应该是不可以怼着眼睛做的,这个样子不合理ESP32

这个是近红外的,这个好啊,这个是双目里面好用的摄像头,买了!

ESP32





审核编辑:刘清

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

全部0条评论

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

×
20
完善资料,
赚取积分