在嵌入式平台上比如 rk3568 这种弱鸡的平台,要做到实时视频处理就非常鸡肋,不像英伟达那种 deepstrem 什么的。
开始的时候,我们使用python 下的 pyzbar + opencv
opencv 读取摄像头的数据然后每帧送到 pyzbar 二维码识别函数里面进行处理,然后打印出识别的数字。结果,非常卡。
优化思路1:利用opencv 支持gstreamer 可否优化速度,编译了很久opencv 但是利用:
print(cv2.getBuildInformation()) 一直显示不支持,暂时放弃。
优化思路2:只执行opencv 读取摄像头数据然后 展示,对比 opencv 直接读取和利用 gstreamer 的python 库直接读,然后展示发现两者速度基本一样,回顾代码,发现占用时间较长的是 二维码的识别。
那么优化二维码识别函数。
如何优化? 可以看到,函数针对 一个图像帧做处理,稍微了解二维码结构的都知道,二维码周围的三个 黑色的方框是二维码的定位特征,那么,如果我们只给 解析函数传送只有二维码的部分,其他不传入,是不是可以提供速度。
代码如下:
import cv2
from pyzbar.pyzbar import decodedef read_qr_code(ima