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

描述

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

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

摄像头

要这样设计

摄像头

俩个摄像头现在用来做

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

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

摄像头

两个

摄像头

可以看到是2560x720

摄像头

可以看到是合理的

摄像头

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

摄像头

1280x480

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

摄像头

一般是左上为原点

摄像头

一个示意图就是这样

摄像头

写出对图像划分的代码

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图像。

摄像头

可以写成函数

摄像头

这样调用

摄像头

函数的参数再加一个

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

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

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

摄像头

成功

摄像头

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

摄像头

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

  摄像头

如图所示

摄像头

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

摄像头

这个QtPy不咋会用

摄像头

写了一个简单的GUI

摄像头

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

摄像头

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

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

摄像头

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

别骂了

摄像头

豁出去了,眼睛直接打开

摄像头

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

摄像头

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

摄像头

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

摄像头

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

摄像头

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

摄像头

完整效果

摄像头

对称

摄像头

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

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

摄像头





审核编辑:刘清

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

全部0条评论

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

×
20
完善资料,
赚取积分