- 博客(52)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 【降龙算法】基于QT插件机制实现一个机器视觉算法小框架
机器视觉行业有各种各样的拖拉拽框架,也叫做低代码平台,例如国内海康的VisionMaster:一个机器视觉框架需要包含各种算法模块,日志窗口,图像显示窗口等等,【降龙算法】就是做了一个入门级的机器视觉算法框架,虽然降龙GUI的界面很简单,但在设计思想上五脏俱全。
2024-01-13 09:51:22
1563
1
原创 QT实现机器视觉图片查看窗口
在我们常规认知里,例如显示一张图像,那只需要一个QWidget(也可以说是画布),然后我们将图像显示在QWidget上(也可以说画在画布上),就完成了,只需要两个对象,一个图像,一个QWidget窗口。Graphics Scene:场景 /场景管理器( Scene 同时担负着管理场景中的对象,建立索引等工作)。Graphics View:图形视图,也可以说是窗口。Graphics Item:场景中可以被显示的元素,可以是我们的图像,也可以是矩形圆形等任何东西。
2024-03-02 14:41:58
1119
原创 【重明】机器视觉QT/C++实现工业相机二次开发框架
工业相机二次开发是机器视觉行业必不可少的技能之一。而如何实现一个框架,能够兼容所有工业相机二次开发,从而支持多种类型的工业相机,就是机器视觉行业的进阶技能了。重明工业相机二次开发项目就是在实现相机二开框架的基础上,完成了海康工业相机的二次开发。
2024-01-13 10:24:54
1719
原创 【opencv源码解析0.4】如何使用cmake来管理项目
前面几篇文章我们都是围绕Visual Studio 2019这个IDE来展开的,IDE为我们做了太多太多的事情,虽然使用很方便,但工程管理太臃肿,你的项目都会夹带着诸如.sln、.vcxproj、.filters、.user等等各种VS自己的工程文件:甚至vs会给你自动生成很多诸如DLLMain、pch.h、pch.cpp等等这些完全可以省略的优化文件。
2023-02-18 16:06:58
988
1
原创 【opencv源码解析0.3】调试opencv源码的两种方式
上两篇我们分别讲了如何配置opencv环境,以及如何编译opencv源码方便我们阅读。但我们还是无法调试我们的代码,无法以我们的程序作为入口来一步一步单点调试看opencv是如何执行的。为此我们介绍两种调试opencv的方法。
2023-02-18 15:57:24
2064
原创 【opencv源码解析0.2】opencv库源码编译
上篇文章我们介绍了如何配置opencv环境,搞清了opencv的包含目录include、静态库链接以及动态库链接的作用。但环境配置只能让我们使用opencv库,如果要阅读opencv源码,我们就需要编译opencv的源码来生成VS工程,这样才可以完成各个模块、各个文件之间的跳转与阅读。本教程的环境为首先进入我们上篇文章中安装的opencv文件夹:sources就是opencv的源码,是使用cmake进行工程管理的,因此我们使用cmake来重新编译该源码。安装cmake不再赘述,大家自行百度。
2023-02-18 15:53:41
1775
2
原创 【opencv源码解析0.1】opencv库VS环境配置
本系列文章首发于公众号【周旋机器视觉】。这个这门课程的第一篇文章,主要是opencv环境配置。
2023-02-18 15:49:16
940
原创 【手撕算法】FMM图像修复算法C++实现
FMM算法出自Telea的论文An Image Inpainting Technique Based on the Fast Marching Methodopencv的inpaint函数就是采用了Telea的基于FMM的图像修复算法,本文基于opencv的inpaint函数,该函数源码位于(我的):opencv\sources\modules\photo\src\inpaint.cppFMM算法基于的思想是,先处理待修复区域边缘上的像素点,然后层层向内推进,直到修复完所有的像素点。下面
2021-04-19 12:19:50
1885
原创 【手撕算法】PatchMatch图像修复算法C++实现
PatchMatch图像修复算法PatchMatch算法出自Barnes的论文PatchMatch: A Randomized Correspondence Algorithm for Structural Image EditingPatchMatch 算法就是一个找近似最近邻(Approximate Nearest neigbhor)的方法,要比其他ANN算法快上10倍+。将下面的图理解了,就基本理解了整个算法。看上图时,我们以蓝色为主颜色。A代表原图像,矩形框代表待修复的patch块,
2021-04-19 12:18:44
1868
8
原创 【手撕算法】Criminisi图像修复算法C++实现
该算法出自Criminisi的论文Region Filling and Object Removal by Exemplar-Based Image Inpainting该算法只要思路是利用图片的已知区域对待修复区域进行填充。而填充的顺序是根据计算优先级确定的,填充的基本单位是自定义大小的像素块。先来看一下论文中比较重要的两个图片,图一介绍了填充的基本原理:将图像分为已知区域(source region)和待填充或移除区域(target region),填充从target region的边界
2021-04-19 12:16:32
2575
5
原创 图像修复系列资料
图像修复系列资料通过图像分割和显著性检测这两个系列,我认为在开始写算法之前先放一篇综述整理会更好一些。综述整理文会包含对该系列大体的介绍,介绍将会分析哪几个经典算法,以及在学习这些算法时我所参考的所有文章资源,我觉的一个算法靠一篇文章绝对无法使大家学会,所以大家可以看看我参考的那些博客,会事半功倍。图像修复综述首先辨别一下图像修复,图像复原,图像补全这仨的关系。图像修复偏重修复划痕之类的这种小破损,而图像补全则偏重修复大块的缺损(包括物体移除之类的),图像复原则是提高图像的成像质量。本系列的算法
2021-04-19 12:13:18
1193
原创 【手撕算法】AC显著性检测算法
【手撕算法】AC显著性检测算法算法原理论文名称:Salient Region Detection and SegmentationAC算法同样是计算每个像素的显著值,但却不是基于全局对比度,而是基于一定尺度的感知单元的。而且整个AC算法是融合了多个不同尺度的感知单元计算的显著值得到的最终显著图。如上图,R1为当前像素,计算当前像素的显著值,需要计算该像素LAB三个通道的特征值与R2区域(上图为5*5)所有像素特征值的均值的差。而R2区域的半径是可变的,算法设定R2区域的大小范围:MinR2
2021-04-19 12:11:53
1214
原创 【手撕算法】FT显著性检测算法
FT算法原理FT算法出自论文:Frequency-tuned salient region detectionFT算法实现也非常简单,该方法从频率角度分析图像。图像在频率域可以分成低频部分和高频部分。低频部分反映了图像的整体信息,如物体的轮廓,基本的组成区域。高频部分反映了图像的细节信息,如物体的纹理。显著性区域检测用到的更多的是低频部分的信息。在实际进行计算时,FT方法使用窗口5*5的高斯平滑来实现对最高频的舍去。像素的显著性可以用下面公式计算:其中,Iu为图像的平均特征,使用Lab颜色特
2021-04-19 12:10:58
2251
原创 【手撕算法】HC显著性检测算法
【手撕算法】HC显著性检测算法前言HC算法出自程明明老师的论文:Global Contrast based Salient Region Detection这个论文一共提到了两种算法,分别是HC与RC。HC仅仅是考虑了颜色特征,而RC考虑了空间特征。我们上一篇文章介绍的LC算法就是仅考虑了颜色特征。HC算法和LC算法本质上是没有什么区别的, 但上篇LC算法我们给出代码处理的是灰度图,而HC算法是在LAB颜色空间处理的彩色图。RC以后再说。此外我建了一个微信交流群,号主我比较菜,不过群里有
2021-04-19 12:09:01
535
原创 【手撕算法】HC显著性检测算法
前言HC算法出自程明明老师的论文:Global Contrast based Salient Region Detection这个论文一共提到了两种算法,分别是HC与RC。HC仅仅是考虑了颜色特征,而RC考虑了空间特征。我们上一篇文章介绍的LC算法就是仅考虑了颜色特征。HC算法和LC算法本质上是没有什么区别的, 但上篇LC算法我们给出代码处理的是灰度图,而HC算法是在LAB颜色空间处理的彩色图。RC以后再说。此外我建了一个微信交流群,号主我比较菜,不过群里有厉害的哈哈,欢迎大家进群一起学习.
2021-03-05 08:49:30
4000
7
原创 【手撕算法】C++实现超像素分割算法
写完这篇,图像分割的传统方法就快全了,传统图像分割大体有基于阈值的,这类就没啥算法可以写,所以直接略过了;然后就是K-means这种聚类/分裂的,从几个点开始进行聚类分割,或者一张图不断分裂达到分割目的;【手撕算法】K-means算法实现主题色提取再有就是区域生长这类的;【手撕算法】基于队列实现的区域增长分割算法以及分水岭算法,分水岭算法代码写好有一段时间了,但实在不知道文章咋写…就再放放吧;最后就是超像素分割了,超像素分割有k-means算法的影子,所以可以先看看k-means算法的代码实现过程.
2021-03-02 09:23:09
1604
原创 【手撕算法】K-means算法实现主题色提取
K - Means是一种对图像进行聚类的算法,属于无监督分割聚类方法,这种方法不对聚类进行层次划分,只是通过分析聚类的性质和均值,将像素简单地划分为不相交的聚类。今天结合一个在知乎看到的问题来说:一张图片上有上百种颜色,如何在一张图上筛选出小于五种的基本色,或者在一张图上进行颜色划分归类?为了做品牌,我们需要从符合品牌调性的图片中提取品牌色,但一张图片的颜色有上百种 我们怎么把这些颜色归类划分 提取呢?有答友已经回答了该问题,我们今天就是C++实现K-means算法来解决这个问题。该问题链接:.
2021-03-02 09:20:48
1090
1
原创 【手撕算法】基于队列实现的区域增长分割算法
上一篇介绍了深度搜索DFS和广度搜索BFS两个算法,本文就是基于BFS算法实现的区域增长算法。此外建了一个qq群:222954293,既方便大家一起交流学习,还可以传一些程序文件,欢迎大家加入交流。程序源码我就放群里了。区域增长算法简介区域增长算法的原理非常简单,就是以一个种子点作为生长的起点,然后将种子周围的点(可以是四邻域也可以是八邻域)进行筛选(筛选条件可以是与种子点像素值是否接近,或者像素梯度是否小于阈值等等)。如果满足相似性,则该像素归为和种子一类,并对这个像素进行邻域分析,直到没有新的像
2021-02-06 18:40:16
482
原创 python写情人节女朋友的EXCEL画像!
祝大家心想事成,永不被渣,得其所爱,幸福美满。给大家准备了一份已经写好的代码,利用python+opencv+openpyxl,opencv实现读取图片像素颜色,然后openpyxl自动填充Excal表格对应单元格背景颜色,得到一副Excal填充图画。文末代码下载链接。先来看看效果叭(gif动图)!(换成你女朋友的照片,效果会比二次元好很多,因为更加逼真了)然后看代码叭!(兄弟们店点赞)。配置环境我们需要用到python以及openpyxl和opencv包,没有下载的小伙伴可以去配置一下,超级
2021-02-06 18:38:38
2976
4
原创 【手撕算法】opencv实现走迷宫算法
好久没更新了!我又带着干货回来了。此外建了一个qq群:222954293,既方便大家一起交流学习,还可以传一些程序文件,欢迎大家加入交流。本文利用opencv实现了深度优先搜索DFS和广度优先搜索BFS两个算法来走迷宫,迷宫也是用opencv+鼠标画的。绘制迷宫首先是绘制一个迷宫了,直接网上找一个迷宫图然后opencv二值化处理一下也可以。我是利用鼠标回调函数自己画的,更简洁明了一些。在画迷宫时,我们鼠标点击左键,则在点击位置放置一块墙(白色),点击右键,则放一块路(黑色),点击中键,则放置一块.
2021-02-04 15:15:41
1677
1
原创 使用OpenCV进行模糊检测(拉普拉斯算子)
使用OpenCV进行模糊检测(拉普拉斯算子)本文首发于公众号【Opencv视觉实践】,翻译自光头哥哥的博客:【Blur detection with OpenCV】。本文仅作学习分享,原文链接:https://www.pyimagesearch.com/2015/09/07/blur-detection-with-opencv/这只超可爱、超活跃家养小猎犬可能是有史以来拍照次数最多的狗。从8周大我们得到它的时候,到现在,不到3年的时间,我们已经收集了6000多张狗狗的照片。在刚刚过去的这个周
2020-11-02 21:13:18
7150
3
原创 使用OpenCV和Python标记超像素色彩
本文翻译自光头哥哥的博客:【Labeling superpixel colorfulness with OpenCV and Python】,仅做学习分享。原文链接:https://www.pyimagesearch.com/2017/06/26/labeling-superpixel-colorfulness-opencv-python/在我们上一篇关于计算图像色彩的文章发表之后,PyImageSearch的读者Stephan在教程中留言,询问是否有一种方法可以计算图像特定区域(而不是整个图像
2020-11-02 21:06:52
1851
4
原创 利用opencv对图像进行长曝光
利用opencv对图像进行长曝光本文首发于公众号【Opencv视觉实践】,翻译自光头哥哥的博客:【Long exposure with OpenCV and Python】,仅做学习分享。原文链接:https://www.pyimagesearch.com/2017/08/14/long-exposure-with-opencv-and-python/我最喜欢的摄影技术之一是长曝光,这是一个创造图片的过程,可以展示时间流逝的影响,这是传统摄影无法捕捉到的。当应用这一技术时,水变得如丝般光滑,
2020-11-02 21:02:51
2099
翻译 OpenCV快速傅里叶变换(FFT)用于图像和视讯流的模糊检测
万字长篇教你学会OpenCV快速傅里叶变换(FFT)用于图像和视频流的模糊检测
2020-09-15 15:27:36
6031
7
原创 python写七夕超硬核礼物!
七夕硬核惊喜礼物!利用python+opencv+openpyxl实现Excal单元格颜色填充女朋友照片!详细教程附代码
2020-08-24 12:18:52
2251
3
翻译 opencv实现眼动检测【胡子哥哥】
本文翻译自胡子哥哥博客,原文地址:https://pysource.com/2019/01/04/eye-motion-tracking-opencv-with-python/#有视频版本,可以去上面链接看英文版,也可以去B站关注【周旋学opencv】看我搬运的加了中英双字幕的版本。下面是正文。了解眼的构造在进入图像处理的细节之前,让我们稍微研究一下眼睛,让我们想想有什么可能的解决方案。在下面的图片中我们看到一只眼睛。眼睛由三个主要部分组成:瞳孔——中间的黑色圆圈虹膜——更大的圆圈,不.
2020-08-23 12:23:43
2829
1
原创 你可知,图像处理的回眸女郎是何方神圣?
在我学习这条路上,至今为止遇到了两个非常重要的女人,一个是高中课本的蛋白质女王:另一个就是学计算机视觉遇到的回眸女郎了:我以前没对她产生过太多的疑问,感觉人们都用这个图,肯定和我平时丧心病狂的图像处理一定要用二次元图片一个心理。而且我一直以为就只有一个头像而已,但其实稍微动下脑子就应该想到,肯定是有全身图的。只不过我没有脑子这东西。为了防止你们看完全身图就看不下文了,我就把图放文章后面了。今天我就想知道,这个我计算机视觉之路上不可回避的女人,到底是何方神圣?名字是讲课时老师说的,叫莉娜(L
2020-08-10 18:24:57
1516
3
原创 用opencv给彦女王生成一副蒙太奇画像
大家好呀,前两天烈阳天道1上映了,不知道大家看没看呢,里面还有一小段彦穿越虫洞与猴哥相遇的画面,彦女王啊啊啊~~今天用opencv给彦生成一副蒙太奇画像!
2020-08-09 12:48:02
36353
86
原创 这些opencv的书籍和网站里,肯定有你不知道的宝藏
自学计算机视觉两年了,跟大家分享一些opencv的书籍和网站,有了这些根本不需要去买任何实体书了。
2020-08-08 09:41:26
11611
6
原创 opencv实现哈哈镜变换
我绝对是无聊爆炸了,所以我又丧心病狂处理二次元图片了。今天基于像素变换来实现图像的哈哈镜变换,效果就是下面这样了:哈哈镜分两种,一种是挤压,一种是放大。分别对应凹函数和凸函数。输入一副图像,首先设置缩放中心center,我们取原图鼻子处为中心。设置图像上任意一点到中心点的相对坐标tx= x-cx,ty=y-cy。左边为挤压哈哈镜,对应像素映射函数://变换后新的坐标x = cos(atan2(ty , tx))* 12*(sqrt(tx*tx + ty*ty))+cxy = sin(ata
2020-08-01 19:12:15
1935
原创 【资源分享1】日本同行整理的视觉处理100问
我新开了一个专栏放资源分享,专门放一些我搜集的觉的不错的,不至于吃土的学习资源。希望给大家一些帮助。能找到出处的我都会尽力注明,没有的大家知道也可以评论告诉我。还有就是,只是单纯分享,我没有收取任何利益。今天介绍的是一位日本可爱的大佬的github项目,项目地址:https://github.com/gzr2017/ImageProcessing100Wen图像处理100问,这个项目切切实实的包含了100个各种直击你薄弱底子的问题,看完可以帮你完善很多的知识漏洞和误区。直接看看目录吧:.
2020-07-09 08:23:02
554
原创 唉,再再再学一下直方图:直方图反投影
之前写过一篇【opencv】带你再学一遍直方图,里面的内容可以看下图。所以今天还要再再再学一个直方图的API:直方图反投影。直方图反向投影是干啥的呢,它用于图像分割或在图像中查找感兴趣的对象。用什么来查找呢?用直方图。直方图在一定程度上可以反应图像的特征,我们截取一个有固定特征的样例,比如草地,然后计算该块草地的直方图,然后用这个直方图去和整幅图像的直方图做对比,根据一定的判断条件,就能得出相似的即为草地。看着就像是语义分割,其实一定意义上这就是语义分割,这不过直方图反向分割的依据是人为计算的(直
2020-06-07 18:33:58
857
原创 【opencv实践】图像腌膜Mask的常规操作你真的信手拈来吗?
opencv图像腌膜应用,抠图+水印:今天借一个给图片添加水印的小例子,给大家总结一些图像腌膜的常规操作。
2020-05-25 21:09:27
1041
1
原创 【opencv实践】easy卡尔曼滤波中:结合一个小例子的数学推导
前言我们上一篇文章:【opencv实践】easy卡尔曼滤波上:浅谈介绍了卡尔曼滤波的由来和原理,我们在这儿一句话总结一下,大家如果有不懂的可以去看上篇文章:卡尔曼滤波就是将模型预测的数据和观测数据进行融合,来过滤掉观测误差,进而得到更精确的数据。以一个小车在平面上走为例子,小车的程序让它以初速度为V0,加速度为a的运动方式向前运动,但由于各种误差和原因(比如有风,或者上坡等),我们的小...
2020-04-13 20:04:15
529
原创 【opencv实践】easy卡尔曼滤波上:浅谈
前言前几天有个小伙伴问我卡尔曼滤波,但奈何才疏学浅,我也不会.不过在几天恶补之后,我觉得我可以跟大家来聊一聊卡尔曼滤波啦。在网上逛了很多相关的文章,也在几本书上找到相关内容看了一下,逛了一圈之后除了个别很独到的见解之外,很多其实讲来讲去都那么点东西。文中有些地方也引用了一些别人的说法,因为说的太好了,我都注明出处了。这篇文我们先轻松愉快简单的聊一聊卡尔曼滤波,来帮助奠定一下对它的认识,后面会...
2020-04-13 19:10:57
724
1
原创 【RoboMaster大符识别】你确定真的了解寻找轮廓函数吗?【opencv实践】
前几天师兄跟我讲了一下opencv的findContours()函数识别大符,感觉真的是妙啊!自己学的时候马马虎虎,就导致很多细节都没有领悟到,今天给大家分享一下。大家看完如果觉得不能很好的理解,就等有时间了动手复制粘贴一遍代码,就一定能懂了。还是和前面几篇文章一样,我们要找个小项目实践一下。就以RoboMaster比赛的大符识别这个小项目为例好了。首先,先给大家介绍一下这个小项目:这是一...
2020-04-02 20:02:58
4917
8
原创 【opencv实践】深入理解回调函数
读取一张图片,在该图片上截取一个ROI区域,将截取的图片在一个新的窗口内展示,并将该图片保持到工程目录下。这个题一点也不难,因为书上给的例程已经可以完成大部分工作,只需要自己添加几行代码就可以实现上述功能,但添加这几行代码的过程可以帮助你对鼠标回调函数有一个清楚的理解。
2020-03-27 12:30:28
1529
1
原创 【opencv实践】仿射变换和透视变换
前言下面这副图就是我们今天要处理的了,我们想把它从拍照视角变成鸟瞰图,这是机器人导航中的常用手段,以便在该平面上进行规划和导航。这种变换常常用到透视变换,但我们今天在讲解透视变换时,需要普及一下其他的变换,包括平移,旋转,错切,放缩,以及仿射变换。综述所有复杂的东西,都是由基本的组成的。所以我们需要先了解一下基础的变换有哪些:平移我们对矩形(图像)平移,需要怎么做?对每一个像素点...
2020-03-26 09:53:45
1520
3
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人