-
工业视觉项目之三:3D调平
写在前面在我们项目的3D检测场景中,比如在检测锂电池焊缝表面的凹坑或突起的时候,由于成像不可能保持绝对水平,所以需要对图像进行调平处理,这样才能准确的计算出凹坑深度值和突起高度值。3D调平我们采取拟合平面的方法,因为该方法适合平面点云模型的调平处理。我们项目中的3D图像为tif格式,处理逻辑跟单通道灰度图是一致的,只不过这些值不是灰度值,而是深度信息。调平函数为: PlaneDeepImage( Image, RegionPlane : ImagePlane : : )该函数的输入参数为...…
-
虚函数及实例
简介虚函数是为了实现多态,所谓多态,简而言之就是用父类型的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”。例如:class A{public: virtual void f() { cout<<"A::f() is called"<<endl; }};class B: public A{public: void f() { cout<<"B:...…
-
宏定义define和常量const的区别
区别一:类型和安全检查不同const定义的常数是变量,带类型,而#define定义的只是个常数,不带类型。const有对应的数据类型,是要进行判断的,可以避免一些低级的错误,而#define 只是简单的字符串替换,没有类型检查,会导致边界效应,例如:#define N 2+3 // 我们预想的 N 值是 5,我们这样使用 double a = N/2; // 我们预想的 a 的值是 2.5,可实际上 a 的值是 3.5区别二:编译器处理不同#define是在编译的预处理阶段起作用,...…
-
工业视觉项目之二:3D图像模板匹配
写在前面标题中虽然说是3D图像的模板匹配,其实本篇内容的实质仍是2D,因为我所叙述的项目中的3D图像格式为tif,处理逻辑跟单通道灰度图是一致的,只不过这些值不是灰度值,而是深度信息。比如下面一幅图,是锂电行业某公司产线上的焊后3D成像,在这里模板匹配主要解决的是观察孔的定位(红色框中)。模板生成read_image (Image, './1634208093_4_3D_origin.tif')* 1. Build the ROI from basic regionsgen_circle ...…
-
工业视觉项目之一:2D图像模板匹配
写在前面这个系列我会把做的视觉项目的检测点梳理出来,但出于种种原因,项目工程代码无法开源,我尽量贴出一些Halcon代码,并且把运行时所需要的样例图片附在文中以供下载,确保能运行复现,希望对初学者有所帮助,那么这个系列就从2D图像模板匹配开始。Halcon的模板匹配有三类:1、基于灰度;2、基于形状;3、基于描述符在我做的项目里面,模板匹配主要解决的是定位问题,并且是基于形状。比如下面一幅图,是锂电行业某公司产线上的焊后成像,在这里模板匹配主要解决的是极柱孔的定位(红色框中)。模板生成re...…
-
解决Spyder无法显示
突然,在Anaconda中打开Spyder时出现下面问题:我这里的情况是PyQt5的版本过高,命令行里提示说版本要小于5.13,所以我这边重装PyQt5和PyQtWebEngine如下(应该不区分大小写):pip install pyqt5==5.12.0pip install PyQtWebEngine==5.12.0但这种方法下载速度实在太慢,可以用镜像:pip install pyqt5==5.12.0 -i http://pypi.doubanio.com/simple/ --tr...…
-
扬州慢
人言《扬州慢》有黍离之悲。寒水初团,晚云澌没,远林漠漠如纱。望垂天压地,裹百里千家。几多是、归来倦客,避人无计,闲数飞鸦。者良辰,封舍埋田,楼隐悲笳。首丘尚死,又何须、多难堪夸。恰故国城春,零星草木,山海无华。更那故人长绝,谁相与、学种侯瓜。算年来踪迹,终成岁月清嘉。…
-
自嘲
蓝桥路远寒风近,宝马香围豆蔻纤。何及连江吹细雨,偏于老大滴青衫。…
-
Numpy用法汇总
首先导包:import numpy as np元素求和a = np.array([1, 2])b = np.array([3, 4])print(a + b) #[4 6]print(np.sum([a, b], axis=0)) #[4 6]print(np.sum([a, b], axis=1)) #[3 7]print(np.sum(a)) #3print(np.sum([a], axis=0)) #[1 2]print(np.sum([a], axis=1)) #[3]...…
-
Git问题汇总
修改.gitignore文件不生效git rm -r --cached .移除已经托管的文件,然后重新上传仓库即可。解决合并冲突这种情况一般是在协同开发过程中,同一文件的同一地方被多人编辑或者在不同分支被编辑,然后在merge时碰到,因为此时Git无法确定要保留哪一处改动,所以这时我们要根据CONFLICT的提示,找到引起冲突的文件并打开,并找到类似下面的冲突符号:<<<<<<< HEAD比如这是冲突文件的第一行,你改动了此处,改动后的内容显示在这...…