首页 > 其他分享 >我学习图像处理的小结

我学习图像处理的小结

时间:2022-12-25 21:31:40浏览次数:60  
标签:mfc com halcon 学习 OpenCV 图像处理 csharp 小结

    前一段时间,我一直在制作OpenCV基础知识的课件(《学习OpenCV3.0初级实战视频课程》 ​​http://edu.51cto.com/course/10381.html​​​,《学习OpenCV3.0中级实战视频课程》​​http://edu.51cto.com/course/10712.html​​​)。因为一方面我感觉如果仅仅是有比如“答题卡识别”​​http://edu.51cto.com/course/8637.html​​​,“图像拼接”​​http://edu.51cto.com/course/9313.html​​​这一类的视频,总是缺乏一个系统的过程;另一方面我也在做视频的过程中,反省自己对基础知识是否掌握牢靠了,千万不能误人子弟。那么课件的制作,包括内容的顺序,主要还是基于《learningOpenCV3》的。结合制作课件,我对《learningOpenCV3》书后的习题较为仔细的解决,并且push到了Github上​​https://github.com/oreillymedia/Learning-OpenCV-3_examples​​。有push当然也就有commit了,可喜的是这个commit是由Opencv类库的创始者,也是《learningOpenCV3》这本书的作者Gary操作的。一来二去混熟了,我就问Gary这书怎么还没中文版呀?他说开始搞了呀。我就说我能不能加入呀?他说行。要了我的email,接着联系上了清华出版社,也看到了部分初稿。由于书已经翻译的差不多了,我就作为reviewer加入,主要是看一看语法和程序方面的错误。review的过程,实际上还是一个重复学习的过程,很多在以前学习过程中一笔带过,或者看不懂就拉倒的地方,现在就必须认真仔细地来看——多多少少要担负责任的呀。这个过程中,反思走过的路,悟出了一些东西,主要是当时是如何一步一步学习起图像处理的,和大家分享:



 



  第一个过程,从不了解到了解



  我一开始是用csharp的,而且刚开始做图像处理用的是halcon。halcon的官方自带的例程很多,百十来个吧,我当时一个一个跑着玩,感觉很有意思;然后就想办法融合到csharp中去。csharp不是写界面快嘛,加上halcon的函数效果,就能够得到完整的程序。然后我开始修改这些例程,实际上,我一开始使用halcon来做图像拼接,并且实现了出来但是halcon的版权的呀,还有和界面的交互的问题也多,苦恼时看到一本书,叫做《学习OpenCV2》,听老师傅说这个很厉害,翻了一翻——完全看不懂呀!



 



  第二个过程,抄袭,形成自己的东西



  版权是硬伤呀,没有办法只能学习OpenCV,一开始不是看《学习OpenCV2》,而是其他书。我采用的方法是在当当、china-pub中搜索opencv这个关键字,然后找到所有已经翻译成中文的opencv方面的书,然后再亚马逊上面搜索opencv,再找到那些还没有翻译的原版。基本上,OpenCV相关的书英文的我都有,比较重要的有中文的。书拿到了,我认为比较高效的方法就是——快速过一遍,有了基础;然后跑里面的例子,增加感性的认识;然后再根据需要重构,反复反复。这个过程中,也生成自己的专用函数GOCVhelper(位github开源为了使用OpenCV,从头学习mfc,虽然现在c++发展很迅速了,windows这块还是mfc支持的比较好;偶尔看到于世琪的dshow对mfc的支持,感觉这个太好了,多次封装成为了GOMFCTemplate2(位github开源,,成为一个比较完整的库了,也发给于世琪看了,他说很好!还帮在微博上推了一下。



但是mfc写界面实在太慢呀,怎么办?两条路。一个是用csharp来写,在这个方向研究,形成了《Csharp调用基于Opencv编写的类库文件》 这种方法,但是有缺陷,传递的图片不能太大太快;另一个方向是mfc形成更全面的类库,实现了GreenOpenPaint​​,类似于画图程序,带文件列表,能够放大缩小还带阴影,最重要的还是带准确的标尺,还能够画矩形框。要知道,想在mfc中实现这种效果,全部要底层实现呀,我可是翻遍了github,codeproject,问遍了stackoverflow才得到这样的结果的。



当然,这些模型的推动,都是有实际项目拉动的。首先实现项目,然后从项目中将模型精良出来,方便下次使用。我基本上采用这个模式吧。



  这样,csharp通过clr调用opencv , GreenOpenPaint实现多图像处理,再加上GOMFCTemplate2实现实时视频处理。那么对于桌面来说,基本够用了。下一步就是手机端和webapi了,这些已经思考到了,在研究。



 



  第三个过程,算法原创



  做到这个过程,还只是使用OpenCV做项目。但是随着项目的深入,很多时候客户的要求,不是有现成的算法的,也不是通过现有算法进行拼接能够解决的。怎么办?只能自己去研究,有一些问题是有论文的,也可能有书,运气比较好还有matlab代码;也会遇到了太少见了,论文也比较少。这个时候,需要的能力,还是最基本的英语数学。能够快速阅读得到自己要的东西,但是往往一篇重要的的论文也得读个十几、几十遍吧,数学这块,我主要从线性代数开始,包括做《learningOpenCV3》课后习题的时候,只要涉及到数学问题,都想办法给解决掉,推导出来!而不是跳过去。因为我已经认识到,数学对于灵感呀、思维呀综合能力的影响很重要;能够把一个定理,比如pca中svd分解给推导一个例题出来,再使用这个函数,那感觉绝对不一样的(《学习OpenCV3》第7章第4题-SVD奇异值分解的验算​​



图像处理涉及方面很多,无论是理论、实现还是应用场景,再加上软件、硬件,我也只是接触、了解、实现了很小的一个部分。但是反思这几年的过程,感觉还是有必要小结一下的,这里把自己博客中的一些东西串了一下——每一篇博客的发布都肯定是有原因的,不是随便发布出来的。写博客是总结,也是分享。现在感觉博客看的人还是比较少,感觉有里面的一些资源,还是有自己的思考在里面的,是有一定价值的东西。大家如果有机会,还是帮忙宣传宣传。有机会也多来踩一踩,增增人气!



  最后,放些图,有图有真相嘛~



 



我学习图像处理的小结_OpenCV



 



 

标签:mfc,com,halcon,学习,OpenCV,图像处理,csharp,小结
From: https://blog.51cto.com/jsxyhelu2017/5968399

相关文章

  • 图像处理界面--缩略图的显示
    ​​http://pan.baidu.com/s/1i5JGBFB​​编写一个图像处理类的程序,实现缩略图是非常自然的想发。基于mfc+opencv框架,实现以下代码stylechildbordernone一、填写界面主......
  • charles学习笔记
    一:认识Charles1:Charles是什么?CharlesisanHTTPproxy/HTTPmonitor/ReverseProxythatenablesadevelopertoviewalloftheHTTPandSSL/HTTPStrafficb......
  • Linux学习目录
    超哥带你学linuxDay1:(1)​​linux博客内容地址(2):​​服务器核心知识​​(3)​​linux入门介绍知识​​(4)​​vmware系统安装知识(5)​​远程连接linux知识今日作业:1.服......
  • ELK学习目录
    DAY1.elasticsearch和kibana环境搭建以及简单介绍A:环境搭建配置(1)j​​ava虚拟机安装​​(2)​​elasticsearch安装&&kibana安装​​B:学习和解决的问题(1)​......
  • 学习笔记——刷题小记
    2022.12.25550D-RegularBridge*1900+构造+图论。评分虚高,属于比较一眼的题;主要考察构造能力,与图论关联不大,不过涉及到了“割边”的知识,这个图论标签打的没太大毛......
  • Task0-机器学习综述 笔记1
    文章目录​​Task0-机器学习综述​​​​机器学习的发展​​​​机器学习分类​​​​机器学习模型​​​​机器学习损失函数​​​​机器学习优化方法​​​​机器学习的评......
  • 爬虫学习(6):通宵两万字xpath教程,学不会找我
    文章目录​​一、必看内容!!!​​​​1)简短介绍​​​​2)必备知识​​​​3)为什么我要写这篇文章?​​​​4)强烈推荐教程专栏​​​​二、开始使用xpath​​​​2.1常见的HTML......
  • 【企业数字化转型】数字化转型的本质(学习笔记)
    摘要:数字化转型的本质是:在“数据+算法”定义的世界中,以智能数据服务的流动,化解复杂系统的不确定性,优化资源配置效率,构建企业新型竞争优势。我们要换一个视角,我们从一种静......
  • 学习.NET MAUI Blazor(二)、MAUI是个啥
    随着.NET7的发布,MAUI也正式发布了。那么MAUI是个啥?我们先来看看官方解释:.NET多平台应用UI(.NETMAUI)是一个跨平台框架,用于使用C#和XAML创建本机移动和桌面应用......
  • Android studio学习第二期
    layout目录下app页面布局文件activity_main.xml的创建和跳转activity为一个应用程序组件,提供一个屏幕,用户可以用来交互为了完成某项任务创建步骤这里选择第二个xml文......