Python调用Lua:Lupa

lua与python均为成熟的脚本方案,它们的不同在与体量,Lua的体量小,高效的执行方式适合嵌入式,python胶水的强大不言而喻。那么如果自己已经有了lua脚本的解决方案,python能否调用呢?答案是肯定的,这篇博客将介绍python中集成的lua环境包:lupa,简单介绍该工具的使用。

阅读更多

聊聊条码与二维码检测算法的优化

条码和二维码搞了许久,之前在做二维码识别的优化,想能搞出多少花来呢?最近需要在极小的内存下完成二维码的识别和解码。顿时头大了,不过锅刚刚解了,就来说一说。

条码和二维码的特点就是我们前处理之后,都是处理的二值图像。那么在二值图像上操作有什么好方法呢?不卖关子,说出答案了:游程编码。

阅读更多

图像游程编码的腐蚀与膨胀操作

最近英语课上聊到了互联网兴起以来,交流方式的变化,博客是互联网最早的形式之一,已经相当老了,现在的交流变得更加简短,与微博和朋友圈不到一百字的简短相比,博客是相当长的了。可能是现代人太吝啬自己时间了,写博客的人越来越少,并且博客质量下降,得益于信息的快速传播,也出现了天下文章一大抄的现象。不过我想,还是有些东西需要实实在在的篇幅来沉淀的,于是想起有还有坑没有填,就快点过来把坑填完了。

通常我们使用游程编码的原因是因为游程编码更快,并且更加节省内存,游程编码可以做很多事情,其中就包括形态学操作,这篇博客将详细介绍在游程编码上实现形态学操作。

阅读更多

Lua虚拟机指令

Lua虚拟机会将Lua语句进行解析,解析为Lua虚拟机指令。Lua虚拟机指令有如下四十条(在lopcodes.h有定义)。有时我们需要在lua层面分析lua虚拟机的行为,那么解析lua虚拟机指令将是非常有用的。 我们可以通过luac来将lua脚本生成lua虚拟机指令。

阅读更多

图神经网络GNN的简单理解

2019年的时针开始转动,在CNN、RNN、LSTM、GAN、GNN、CAP的潮起潮落中,带来了这篇博客。放上一篇参考引用。 其实个人认为理解GNN的核心问题就是理解图怎么做傅里叶变换。CNN的核心操作时卷积,GNN也是。CNN计算二维矩阵的卷积,GNN计算图的卷积。那么我们定义好图的傅里叶变换和图的卷积就可以了,其媒介就是图的拉普拉斯矩阵。

好了,这篇博客将简要介绍图神经网络的原理,但是不会设计太多数学细节(因为博主数学很烂啦)。通过理解图神经网络的卷积操作,来理解其流程,再会配合代码来做简单解释。

阅读更多

优雅的用Lua调用OpenCV

说起脚本语言调用opencv,我们通常会想到python。如果说要在更小的系统中使用脚本语言,我们会想到lua。如果说用lua进行图像处理,我们肯定会想到大名鼎鼎的torch。torch中的image模块重写了opencv,封装了lua接口,但是如果我们不想修改opencv如此庞大的源码,又想像python调用opencv那样简单直接,那应该怎么做呢?

在正式开始介绍之前,想展示一段简答的代码,来告诉大家即将要做的事情是什么。(也是假人以渔了^_^)

阅读更多

嵌入式脚本语言:Lua

最近在调研嵌入式脚本语言,发现Lua很适合在嵌入式平台运行。第一次认识Lua是在Torch,lua的解释器源码只有几百K,从未见过如此轻巧的脚本语言。Lua是类C的,所以上手超级快。

这篇博客主要涵盖以下几个方面:lua语言(主要是语法相关的资料)、lua的编译、lua与C/C++交互、lua的调用开销。

阅读更多

AprilTag标志识别

OpenCV4.0.0正式release了,其中加入了二维码识别功能,有幸博主最近开始折腾二维码识别,发现二维码的核心就是那三个定位点和辅助对齐点。ZXing和OpenCV都是通过二维码定位点的11311来进行定位的,这是利用了二维码最显著的特征。但是博主会处理一些变态的情况,比如过曝光到11311定位点无法找到(即图像中定位点的黑白间隔不是1:1:3:1:1),于是就需要通过其它方法来找定位点了。一个标志识别库摆在眼前:AprilTag。(OpenCV中集成了类似的库,似乎叫做ARTag,没研究过)

AprilTag诞生于2011年的一篇论文,2016年出了AprilTag2,但是16年的论文感觉没讲啥,再加上看的cpp代码是2013年的,于是这篇博客就对着2013版本来讲好了,我们开始吧。

阅读更多

基于Doxygen的注释风格

维护一份注释就可以维护一份文档,我们需要Doxygen!我们见过opencv、pcl等很多开源库的代码和网站,他们的代码文档都是doxygen生成的,就像title图中那样。

这篇博客简单介绍doxygen使用的注意事项,后面C++风格注释部分摘抄了这篇博客中的内容。欢迎访问原博客。

阅读更多

基于惯量矩的椭圆拟合方法

上一篇博客是《基于最小二乘法的椭圆拟合》,这篇博客介绍另外一种方法。由于现在正处在人生的特(工)殊(作)时(太)刻(忙),所以没怎么写,主要还是贴论文。

不同于最小二乘法直接拟合椭圆方程,论文中通过惯量矩,来预测角度、长轴、短轴,结合中心,来计算得到椭圆参数。实际工程实践中采用游程编码表示区域,该方法亦是Halcon中计算区域等效椭圆的方法,详看论文,谢谢。

阅读更多