- 博客(88)
- 资源 (4)
- 收藏
- 关注
原创 C++/Qt 获取代码段运行时间
如果这里报错LNK 2019,需要在链接器—输入—附加依赖项—添加"Winmm.lib"编译时链接Kernel32.lib库。
2024-10-12 09:12:25
356
原创 机器视觉--光源打光技巧
同轴光的光源平行,完全凸显物体水平面亮度,倒角部分(边缘或划痕纹理部分不明显),优势在于:完全消除被检物体表面反光的影响,可应用于金属检测;光源控制器先曝光,工业相机再曝光,则可能存在延时不同步,需要设置光源控制器延时几十us;一般,频闪光源控制器的曝光时间最大是1000us,因此,相机曝光时间也不超过1000us,如果觉得亮度仍然不够,只能采用光源常亮的模式;至于什么是异色,谨记,'红橙黄绿青蓝’的顺序,颜色相近,即打白,相距较远,即打黑。总结的结果就是,高角度:顶端亮,倒角暗,顶端暗,倒角亮。
2024-08-30 22:19:12
865
原创 Halcon如何实现线线距离
在halcon中,并没有线线距离的相关算子,实际上,如果是两条直线,在不完全平行的情况下,最终会相交,距离为0。因此,在halcon中,应该处理的是线段与线段之间的距离。这里给出的两种确定线段距离的方法。
2024-05-30 14:38:36
813
原创 视觉测量为什么要使用边缘而不是直接灰度阈值分割?
如果阈值选定错误,由于从前景灰度值到背景灰度值是平滑过渡的,那么提取出来的物体将通常会变得更大或者更小。当光照改变时,这个问题尤其严重,因为此时要求阔值必须非常准确地适应改变后的照明情况。描述物体边界的鲁棒性最好的方法是将边界视为图像中的边缘。------Halcon作者书籍《机器视觉算法与应用》使用视觉测量系统,最重要的是精度和稳定性,边缘衡量的是图像对比度数值,因此位置相对变化小。
2024-05-30 10:22:55
255
原创 Halcon机器视觉实战----提取水平方向缝隙区域
如何从一块区域内找到水平方向的缝隙区域(不是高斯线条,从图像中提取,而是从区域内提取,考虑到了区域所在的方向);***动态阈值分割***显示过滤后的区域****区域的开闭运算*开运算,看起来两个细微连接的区域分开了,不会扩展区域边界外部部分,只会更改区域内部的连接处,和腐蚀不一样*闭运算,看起来两个细微连接的区域结合了,不会扩展区域边界外部部分,只会更改区域内部的连接处,和膨胀不一样***这个算子的思路是改变滤波核形状,水平方向上扩展了一个像素,竖直方向上扩展了十个像素。
2024-02-07 12:33:15
266
原创 CMakeLists.txt基础指令与cmake-gui生成VS项目的步骤
本博客主要介绍cmake的基本指令,同时,很多使用Visual Studio小白从Gitbub下载项目源码后,看到CMakeLists.txt,不知道如何使用Visual Studio编译源码;针对以上问题,做一下简单操作与解释,方便小白入门,大佬就没必要继续看啦…
2023-11-17 21:31:14
2491
1
原创 Qt封装的Halcon显示控件,支持ROI绘制
目前机器视觉ROI交互控件在C#上做的比较多,而Qt上做的比较少,根据作者VS+Qt+Halcon——显示图片,实现鼠标缩放、移动图片的文章,我在显示和移动控件的基础上,增加了ROI设置功能,并封装成了一个独立的Qt控件。
2023-11-04 00:16:44
1270
原创 Matlab/C++源码实现RGB通道与HSV通道的转换(效果对比Halcon)
HSV通道是指图像处理中的一种颜色模型,它由色调(Hue)、饱和度(Saturation)和明度(Value)三个通道组成。色调表示颜色的种类,饱和度表示颜色的纯度或鲜艳程度,明度表示颜色的亮度。HSV通道常用于图像处理中的颜色分析、颜色过滤、颜色调整等任务,它相对于其他颜色模型具有更直观和易于调节的特点,因此被广泛应用于计算机视觉和图像处理的领域
2023-10-18 22:18:17
1645
原创 Windows编程dll基本知识点
本篇博客主要是记录windows系统下dll开发的相关基本知识点,并使用相关分析工具分析,有利于初学者学习,更是为开发者查缺补漏;
2023-09-17 21:59:08
910
原创 使用Easy Chm制作chm文档步骤
软件发布后需要相应的文档说明,CHM是微软新一代的帮助文件格式,利用HTML作源文,把帮助内容以类似数据库的形式编译储存。因为使用方便,形式多样也常被采用作为电子书的格式;制作类似的chm文档可以使用Easy Chm软件;
2023-08-27 20:49:14
5330
原创 使用windeployqt和InstallShield打包发布Qt软件的流程
Qt编译之后需要打包发布,并且发布给用户后需要增加一个安装软件,通过安装软件可以实现Qt软件的安装;用于安装软件的软件有很多,这里主要介绍InstallShield使用的流程;
2023-08-27 18:40:54
1100
原创 【五一创作】VS+Qt主界面内嵌自定义控件的四种方法以及不同自定义控件数据交互
在Qt界面开发过程中,一个主界面或者主窗口看成是各个控件排列组合后的集合,对于一些项目而言,有些常用的控件可以封装成自己想要的控件样式并且复用,比如说,log显示控件,图像/视频显示控件等,可以将常用的控件代码封装起来,以便下次复用,内嵌在不同的主界面内。这里总结了常见的四种方法供大家参考;新建一个自定义控件项目一般自定义控件,继承于QWidget;ui文件为另建一个主界面项目,主界面ui文件如图所示,在主界面内添加一个QFrame,在Frame内添加一个布局控件(添加widget控件)
2023-05-03 23:42:51
4214
3
原创 Qt内存管理及泄露后定位到内存泄漏位置的方法
Qt使用对象父子关系进行内存管理。vld.ini是VLD的配置文本,默认读取的是安装目录下的vld.ini 文件,当exe所在目录下也有vld.ini文件时会优先读取这份配置。这里是自己在源码中新建的label控件,执行了QLabel的构造函数,没有指定父对象,需要自己手动释放内存,不释放会有内存泄漏。默认读取的是安装目录下的vld.ini 文件,当exe所在目录下也有vld.ini文件时会优先读取这份配置。这里是自己在源码中新建的label控件,没有指定父对象,需要自己手动释放内存,不释放会有内存泄漏。
2023-04-20 22:58:56
2023
2
原创 计算机颜色学---CIE 色度图以及饱和度处理
了解颜色相关理论与成像知识,对于深入了解视觉相关算法与ISP算法而言十分重要,了解颜色理论,离不开CIE色度图;
2023-04-11 22:11:57
6660
1
原创 Qt软件崩溃定位到源代码位置的方法
如果写好了软件拿给别人用,当软件出现BUG时,则无法定位到出错位置,因此需要定位到错误位置,记录log文件;将CrashDebugUtilx64.dll这个文件,然后放到可执行程序文件夹下。source line是刚才错误的源文件下错误的行数。在exe同级目录下会出现CrashLog文件夹。source file可以定位到错误的源文件。后面的错误定位也是第一行位置导致的。一个dmp文件和log文本文档。在代码调试过程中可以定位到。可以看到刚才的源代码位置是。打开log文档可以看到。
2023-04-06 22:23:07
2907
3
原创 海康工业相机SDK连接demo,Qt界面显示
在机器视觉开发过程中,经常使用工业相机采集图像,以下采用海康机器人提供的SDK开发demo,使用语言C++,界面显示使用的Qt。SDK来自MVS 3.1版本中附属的Development文件夹。
2023-04-05 20:23:27
2790
6
原创 VS+Qt资源管理器与icon图标设置,菜单栏与工具栏在QtCreator中设置的流程记录
当拖入一个控件之后,比如说这里,拖入一个Label控件,可以从属性编辑器内看到类之间的继承关系;(2)把当前项目的qrc文件添加进来(相当于VS虽然有了qrc文件,但由于路径中可能含有中文,需要自己手动添加资源文件)在工具栏内添加选项,需要使用动作编辑器(如果QtCreator内没有出现动作编辑器,视图—动作编辑器)菜单栏,工具栏是QAction类对象,不同于其余控件,没有clicked信号,信号是triggered。,可以先随便输入两个数字,再选中,直接在动作编辑器内编辑。这样编辑就可以出现中文了。
2023-03-26 23:31:44
2663
原创 ISP算法-----Gamma实现
通过Gamma,亮处的像素点发生非线性变换,如图所示,此时,亮处的对比度增加,暗处的对比度降低;从图像增强、图像处理的角度来说gamma,gamma可以提高或者降低亮/暗处的对比度。可以看到,经过Gamma变换后,亮处对比度提高,暗处对比度降低;从数学角度看gamma实际是一个值域范围(0,1)的指数运算;对于显示硬件而言,gamma是成像设备到显示设备的传递;经过Gamma=0.5变换后。
2023-03-16 22:53:04
824
原创 C++,Qt分别读写xml文件
C++常见的是使用tiny库读写,Qt使用自带的库读写;所以,使用tinyxml函数库中的类去读写根元素,text和属性。TiXmlDeclaration:用于xml文件的第一行,定义xml文件的声明操作;TiXmlDocument:定义一些基本的xml文件的基本操作,包含文件流;SaveFile:用于保存xml文件;LinkEndChild:将子元素嵌在父元素内,还可以将text加到元素内。TiXmlElement:不管根元素,元素和子元素,都用此类;TiXmlText:用于元素内的text的操作;
2023-03-04 23:44:53
3911
原创 Qt缩放显示图像(使用事件)
1.使用滚轮事件,实时更新源图像赋值给changeImage;2.设置一个缩放比例,通过判断滚轮的变化,实时更新缩放比例;
2023-03-04 22:27:19
1580
原创 我的创作纪念日(创作整整一年啦!!)
刚开始读研的时候接触到了优快云,并第一次注册了账号,那为什么想到在优快云上记录博客呢?从初中开始我就养成了记笔记的习惯,读研期间开始做机器视觉相关的项目,三年下来,技术汇总成了五本笔记(手写的笔记,嘿嘿,有一些好的函数还写了下来,真的是小白做起来了),毕业之后开始工作,突然间想把之前记录的五本笔记的精华摘录出来,与大家共同讨论,因此才有了第一篇博客,标定的分类,不知不觉间,博客已经写了一年了。粉丝即将突破2000,文章阅读量突破十万,十分开心。 在记录博客的一年时间里,我从工作中也收获了很
2022-12-07 13:42:53
492
6
原创 Halcon机器视觉实战--分水岭分割+距离变换实现粘连物体图像分割
在盆地的最小值点,打一个洞,然后往盆地里面注水,并阻止两个盆地的水汇集,我们会在两个盆地的水汇集的时刻,在交接的边缘线上(即分水岭),建造大坝,来阻止两个盆地的水汇集成一个区域。,在图像处理中,区域本身代表的是图像的某一部分,其本身是不含灰度值的,很多时候,halcon的输入是图像和region一起的,这里只输入了region,没有输入图像,默认。在真实图像中,由于噪声点的影响或者其他干扰因素的存在,使用分水岭算法常常出现过度分割的现象,这是因为很多很小的局部极值点的存在,这样的分割效果是毫无作用的。
2022-11-25 23:08:57
2474
原创 C/C++ 结构体变量初始化的几种方法总结及内存排列(字节对齐)
最近看到一些别人的代码,对结构体的初始化使用了不同的语法,就决定对结构体的初始化方法做个探索,这里小小的记录一下。注意,没有初始化的结构体变量是不会输出的,比如//这样会报错error C4700这样会报错,因为编译器无法确定变量的值;
2022-11-21 21:13:50
2652
2
原创 C++常见十六进制数组转换char数组方法
C++在编写通讯协议解析过程中,通常需要对十六进制进行解析,经常用到位运算,同时结合unsigned char型数据或者char数组解析出自己想要的十进制数字,这里总结了一下常用的十六进制转换十进制或char数组的思路。
2022-11-10 09:38:04
4283
1
原创 Qt,C++中QString,string,char数组等常用格式转换大总结
在平时C++编写过程中,经常用到string类型与char类型,在Qt中显示数据等经常用到QString类型,因此在编写过程中经常需要格式转换,在这里对常用的字符,字符串类型转换做一个总结。先定义好常用的数据类型与变量//QByteArray初始化 unsigned char uchValue = 50;0 };
2022-11-10 09:28:04
4198
原创 Halcon图像分割总结
在机器视觉项目当中,选定特定的图像区域,再此基础上做进一步处理,需要对图像区域分割,分割的方法有很多种,对于具体项目而言,不同的图像分割方法适用的场景不同,因此需要对特定的场景选择特定的图像分割方法,这里对图像区域分割方法做总结。全局阈值分割:在整幅图像中根据灰度阈值进行分割;提取灰度值范围在grayMin到grayMax的区域。可以直接在主程序窗口输入,也可以采用halcon提供的灰度直方图窗口拉拖最大最小值范围,可以实时的看到提取的区域的变化。选中阈值,可以实时看到选中的区域变化适合于直方图存
2022-11-05 20:41:04
4381
原创 Matlab,C/C++语言读取RAW图和保存RAW图
何为raw图?对于图像传感器而言,传感器数据每个像素点是RGGB等(排列方式有很多种),此时并不能看见颜色等信息,这种原始数据的图像,便是raw图。对于ISP算法工程师而言,查看RAW图十分重要,这里提供了一些查看RAW图的源代码。
2022-11-03 23:41:05
4551
5
原创 ISP算法----基本DPC算法实现代码
何为坏点?坏点指的是芯片加工过程中一些电子元器件的损坏,不会呈现图像的像素点,最终效果是图像上的黑点。坏点产生的原因:DPC算法的作用:Bayer模式下坏点矫正。基本POINT算法矫正原理:坏点往往是一个邻域内极亮或极暗的点,以5*5邻域为检测区域。附上Matlab读取RAW图的程序DPC效果
2022-11-03 23:00:30
1502
原创 Matlab底层源代码实现图像开闭操作(与Halcon效果一致)
图像灰度的开闭操作属于图像处理的基础,这里主要展示根据原理,来编写底层的函数代码。首先实现Matlab对图像区域的腐蚀与膨胀函数。
2022-10-26 19:06:02
1448
原创 ISP算法----AWB总结及源代码
AWB算法的必要性:对于彩色相机成像而言,AWB算法可以矫正颜色,视觉效果上看,颜色更符合人眼效果。光学原理:人眼对于颜色具有恒常性。从数学角度来看:所有AWB算法都是调节R,G,B三通道的增益值;所有手动调节白平衡便是人工输入三通道的增益值。
2022-09-10 22:41:22
3722
3
原创 Matlab底层源代码实现Halcon scale_image_max算子效果
Matlab底层源代码实现Halcon scale_image_max效果
2022-07-05 12:14:08
949
原创 Matlab底层源代码实现Halcon scale_image_range(可用于背景分割)
Matlab底层源代码实现Halcon scale_image_range效果(可用于背景分割)
2022-07-05 12:03:22
1318
原创 Matlab底层源码实现prewitt边缘检测和Sobel,Laplace边缘检测(实现效果与Halcon一致)
Matlab底层源代码实现Prewitt边缘检测和Sobel,Laplace边缘检测(实现效果与Halcon一致)
2022-07-05 10:48:28
1771
图像处理/机器视觉领域+ROI交互控件+VS2015+Qt+Halcon12
2023-11-03
将源代码加入到项目中,可以实现非常好看的界面风格,还可换肤,源码参照其他博主
2023-05-14
海康工业相机SDK的Demo源代码C++版本
2023-04-04
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人