PyTorch:The “freeze_support()” line can be omitted if the program is not going to be frozen

在windows上运行pytorch时,稍不注意就会遇到freeze_support()的错误。解决这种错误只要把代码放到if __name__ == “__main__”: 中运行就可以了。就忍不住来深究下这个问题。

这是一个关于windows上多进程实现的恩特。在windows上,子进程会自动import启动它的这个文件,而在import的时候是会自动执行这些语句的。如果不加__main__限制的化,就会无限递归创建子进程,进而报错。于是import的时候使用 name == “main” 保护起来就可以了。

Python生成QRCode并识别QRCode

最近在想把文件编码到图像,于是就先试着把文件编码到了QRCode,然后再解码恢复。python生成qrcode的包就是qrcode包,识别二维码并解码使用的是zbar。这篇博客就简单说下这两个工具的使用。…

正则表达式测试工具

最近因为有把sublime-completions插件转化成vscode-snippet插件的需要(这两个都是自定义代码补全插件),也就是做一些复杂的文本匹配和替换工作,所以写了一个很长的正则表达式。之前写过一篇正则表达式的博客,这篇博客就不说正则表达式了,介(摘)绍(抄)几个正则表达式的测试工具。

个人比较喜欢rubular(可能是因为博主刚上手比较生疏,这个网站给了一个demo,看一看就懂了)…

AWS服务器上手体验

国内云服务比较认可的有阿里云,海外服务器比较认可的有亚马逊和微软。开始都是大家抄的亚马逊。现在向入门级用户提供的云服务都比较相似,这篇博客就根据博主的使用体验来聊聊AWS的使用情况。…

Sublime代码自动补全插件开发快速上手

厌倦了国内繁琐的备案和审查,对无缘无故的网站关停感到无奈,服务器搬到东京后的第一篇博客 ,点开网站速度超级快,心情顺畅,来一发博客。

我们在开发自己的脚本或者编程工具后,可以定义自己的代码自动补全。这篇博客将介绍Sublime中两种添加自己代码补全的方式:代码片段snippet和 completions。…

机器视觉中的光源与打光

机器视觉主要解决四大问题:定位、测量、检测、识别。在机器视觉中打光和光源影响着系统的稳定性,比如在测量应用中,光照发生10%-20%的变化,就可能导致图像边缘偏移1-2个像素,这些问题在算法层面是不容易解决的。所以了解光源和打光非常重要…

计算凸包的最大内接N边形

凸包可以用一组点简要的描绘轮廓的形状,在计算机视觉中有广泛的应用。解算凸包最大内接N边形也是常见的问题。这篇博客介(摘)绍(抄)这一问题的一种解法。…

图像中直线的检测

检测图像中的直线,在图像处理中一直非常有用,这篇博客将主要介绍博主接触过的几种检测直线的方法。主要包括最小二乘法拟合直线、Ransac拟合直线、LSD线段检测、Hough变换检测直线。…

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的调用开销。…

OpenCV4迁移那些坑(之二)图像代码和宏

在OpenCV4中,移除了原来的C接口,这也导致我们在迁移过程中,一些宏和图像代码找不到,比如CV_GRAY2GBR、AA、CV_INTERLINER这种,常常让人摸不着头脑。简单的说下这些问题的解决方法主要有以下几种:…

OpenCV4迁移那些坑(之一)cv::divide

简单的说,就是opencv3及之前,cv::divide函数在遇到分母为0的情况时,对应元素的输出都是0。而到了opencv4则不是这样,更加严谨的做法时将divide的输出元素置为NaN(一个数除以0是没有意义的),这样更加合理和科学。而如果我们之前使用时没有注意,那么在迁移过程中可能会导致程序出错,解决方法就是使用cv::patchNaNs 函数将NaN元素替换为固定值。…