- 博客(209)
- 资源 (109)
- 问答 (1)
- 收藏
- 关注
原创 Windows DIB文件操作详解-1.DIB的读入、保存和显示
本文以主流的DIB 格式演示了DIB的读入、保存和显示,没有考虑兼容情况且减少了错误处理,演示的代码在大部分情况下是适用的,只是为了起抛砖引玉的作用。关于DIB的详细描述当推Petzold的《Windows 程序设计》的“与设备无关的位图”一章,这一章描述非常详细,但是个别地方有些晦涩,结合本文来看可以加深理解。
2014-05-19 17:07:55 7187
原创 12.队列的应用-事件驱动编程
事件驱动编程简而言之就是应用程序维护一个或多个事件队列,完全以事件队列为主线来设计和编写整个程序。这里利用队列实现了一个完整的事件驱动编程过程,模拟了银行排队这一离散事件的发生。
2014-05-05 17:27:52 6307
原创 10.队列
1.理论队列是一种先进先出(FIFO)的数据结构,在线性表的基础上扩展而来,相对于线性表可任意位置插入和删除,它只允许在一端插入和删除,又叫入栈和出栈操作。
2014-04-21 22:16:46 984
原创 8.栈的应用-四则运算算术表达式求解(后序表达式法)
1.理论在上节中看到使用“算符优先法”首先要自己去推导整个算符优先级表,然后计算机按照算符优先级表来出栈和进栈直到完成整个运算。这里推导算符优先级表是一个关键,但是这样比较繁琐,有没有更为直观的算法呢。观察如下算术表达式:1+2*3-2/3表达成二叉树形式如下
2014-04-19 10:31:44 8354
原创 CSDN英雄会-交替字符串
题目详情如果字符串str3能够由str1和str2中的字符按顺序交替形成,那么称str3为str1和str2的交替字符串。例如str1="abc",str2="def",那么"adbecf", "abcdef", "abdecf", "abcdef", "adefbc"等等都为str1和str2的交替字符串。更形式化的,str3的生成算法如下:str3=""while
2014-04-12 11:09:10 1324
原创 英雄会第四届在线编程大赛·线上初赛:带通配符的数
给定一个带通配符问号的数W,问号可以代表任意一个一位数字。再给定一个整数X,和W具有同样的长度。问有多少个整数符合W的形式并且比X大?输入格式多组数据,每组数据两行,第一行是W,第二行是X,它们长度相同。在[1..10]之间.输出格式每行一个整数表示结果。
2014-04-10 20:33:47 1171
原创 3.取色精灵V2.0-非模态对话框自建消息队列、VS2008风格对话框、使用Common Controls、悬浮透明窗口、使用SLIDER控件
取色精灵主要用于屏幕取色主要界面:取色框取色设置软件设置取色历史在这里记下一些主要和通用功能的实现1.非模态对话框自建消息队列在本程序中主界面是非模态对话框,如果在WinMain函数中直接使用CreateDialog函数创建非模态对话框然后ShowWindnow发现对话框秒退,这是因为非模态对话框是没有自己的消息队列的
2014-04-03 22:34:23 2097
原创 11.MIL中测量模块(Measurement)
上节说过灰度匹配的鲁棒性太差,在定位一些特殊的简单特征时,使用单方向的灰度跳变特征(和边缘检测类似)来定位的鲁棒性较好,速度快。你可以定位指定的点、边、条纹三种特征,定位的两个特征的间距即为长度、宽度等特征,所以这个模块叫做测量模块。1.测量流程(1).分配指定的特征Marker使用MmeasAllocMarker函数来设置指定的特征,MIL支持三种特征:点(M_POINT),边(M_
2014-03-31 16:45:42 5538 2
原创 10.MIL中灰度匹配(Pattern)
上节已经提到,图像处理中的匹配包括灰度匹配和几何匹配。灰度匹配主要原理是一对一的像素比对,算法实现是计算两个图像的相关,容易理解,实现容易,但是计算量太大且鲁棒性较差。相对于几何匹配,灰度匹配应用的越来越少,但是在一些比较友好的环境中使用灰度匹配也能得到比较好的效果。匹配流程同样,对于MIL中的中级操作,处理流程遵循如下规则:分配对象->设置对象->(预处理对象
2014-03-31 11:57:19 7934 7
原创 Windows 中GDI、设备描述表和位图
在Windows中,所有的图形和图像显示操作都是通过GDI(Graphic Device Interface)模块完成,,而GDI的显示都是由设备描述表(Context Device,简称DC)来完成的,设备描述表同显示驱动程序打交道,显示驱动程序再同显示硬件打交道,最终得到指定的显示效果。基本所有的书提到设备描述表时都告诉我们把设备表看成一个虚拟对象,所有显示操作同它打交道即可。诚然,在写程序的
2014-03-28 19:38:56 4165
原创 9.MIL中几何匹配(Model)
在MIL系列连载的前8篇都是关于图像获取和输出的主题,从这一篇开始,主要的内容就图像处理。在冈萨雷斯的《数字图像处理》的序言中将图像处理分为如下三类1.低级处理,主要是用于图像的预处理和增强操作,输入和输出都是图像,在MIL中对应Mim...模块2.中级处理,主要是对象识别、分析和测量,输入是图像,输出是从图像中提取的属性(如边缘、轮廓、位置、距离等等),在MIL中对应Mblob、Mc
2014-03-14 16:28:19 8164 4
原创 8.MIL中相机标定(Calibration)
前面讲了MIL的在线采集,这就引申出了如下的问题:1.由于镜头畸变、相机内部参数不一致、环境影响等诸多因素的影响,实际相机采集到的图片会产生扭曲、变形等等,其中最常见的就是镜头畸变,这个问题如何解决?2.不同的相机、不同的镜头针对同一现实物体采集得到的图像的大小不一样,如何确立现实物体和实际图像的对应关系(度量单位转换)?这两个问题通过相机标定来解决。
2014-03-13 19:41:56 10551 13
原创 深入windows的关机消息截获-从XP到Win7的变化
之前写了一个软件用于实验室的打卡提醒,其中一个重要的功能是在关机之前提醒当天晚上是否已经打卡。之前我是在WM_ENDSESSION中弹出一个模态对话框来提醒,在XP中基本工作正常,在Win7中大多数时候工作正常,但是有时候会出现不提醒现象。我想这中间是不是有什么玄机,Windows的关机方案从XP到Win7到底发生了什么变化,如何进行有效的截获Windows关机消息。对此,我搜寻了MSDN和网上论坛结合自己的测评给出一个完善的描述和解决方案,如果你有类似的需求,可以参考这篇文章。
2014-01-12 15:09:29 9200 4
原创 谈一谈属性页和Tab控件
最近给新带的一个小师弟布置了一个小作业:很简单就是有三个Tab页面,每个Tab页面有1个编辑框,在第一个和第二个编辑框界面各输入一个数字,在切换第三个Tab时编辑框内显示前两个Tab页的编辑框输入数字的和。本来只是为了锻炼他对控件的应用,以为很简单,可是小师弟反应不知道如何在将第1、2个Tab的值传递到第三个Tab页面,我想可能新手容易在这里产生困惑,在此记下来供有同样问题的新手学习,同时讲解了用
2014-01-07 13:27:12 7636 3
原创 为什么使用剪切板时都用GlobalAlloc分配内存
我在使用剪切板时,发现通用的都是使用GlobalAlloc来分配内存,我就想不是说在Win32中GlobalAlloc和LocalAlloc是一样的那为什么不用LocalAlloc呢,原谅我的好奇心吧,对此我研究了一番,如果你也有此疑问,可以看一看。
2014-01-02 11:04:24 11788 5
原创 深入了解Windows句柄到底是什么
总是有新入门的Windows程序员问我Windows的句柄到底是什么,我说你把它看做一种类似指针的标识就行了,但是显然这一答案不能让他们满意,然后我说去问问度娘吧,他们说不行网上的说法太多还难以理解。今天比较闲,我上网查了查,光是百度百科词条“句柄”中就有好几种说法,很多叙述还是错误的,天知道这些误人子弟的人是想干什么。这篇文章中我们来详细探讨一下Windows中的句柄到底是什么,希望可以解开广大程序员的心中疑惑。
2013-12-30 11:02:23 98929 28
原创 深入Windows窗体原理及控件重绘技巧
之前有学MFC的同学告诉我觉得Windows的控件重绘难以理解,就算重绘成功了还是有些地方不明白,我觉得可能很多人都有这样的问题,在这里我从Windows窗体的最基本原理来讲解控件的WM_DRAWITEM重绘和子类化重绘,如果你有类似的疑惑希望这篇文章可以帮你解惑。
2013-12-29 13:46:35 30205 10
原创 2.实验室打卡精灵2.0-单实例化、开机启动、托盘操作、程序启动时隐藏主窗口
老规矩,上一张图片最近对实验室打卡精灵做了一些优化,基本上达到了最初设想的功能。现在的功能包括:1.自定义早上、中午、下午、晚上的打卡时间2.软件单实例化,即如果已经运行了一次再次运行会弹出“应用程序已经在运行”的提示3.软件可选择开机自动启动4.软件开始的时候提醒打卡,如果选择了开机自启动可以实现开机时候提示打卡5.关机的时候提示打卡
2013-12-22 10:59:35 2564 3
原创 98年的VC6到08年的VS2008-从atoi的用法差别看UNICODE的使用
由于平时写的较多的是工业设备程序,所以用的XP+VC6比较多,最近写一个小程序,用上了VS2008。之前也用过很长时间的VS2008,没出什么大问题,但是今天将之前在VC6上写的一个工作正常小接口程序拿过来直接用居然不行。自认为一直很注意C++语法标准的问题,也比较清楚VC6和VS2008的差别,可是试了很长时间都没发现问题,最后解决了问题发现是UNICODE的问题。在这里记下问题,希望对遇到
2013-12-17 22:03:47 4773 2
原创 7.MIL构建一个视频播放器
前面讲解了MIL视频的保存、加载和播放,那么有不少人私信我说按照我的讲解构建的视频播放器有问题,这里综合他们的问题,我这里演示一个简单的播放器,它实现了简单的视频播放功能:打开视频、播放视频和暂停视频。如果你想实现更复杂的功能可以在此基础上扩展。在此过程中,我会指出常犯的错误。另外,需要补充说明的是,这里的MIL做的播放器,由于支持的视频编码的格式和完善程度有限,并不支持通用视频 的打开,例如...
2013-12-08 16:19:22 3505 2
原创 6.MIL采集和实时显示
前面讲到的都是离线的图像获取方法,实际中我们做机器视觉都是在线采集图像和处理,处理结果决定了计算机要给出的控制信号如电机运动等,这样就实现了实时视觉反馈运动。本文先详述了一个完整采集系统的构成(从相机到显示器),而后演示MIL三个函数MdigGrab,MdigContinous,MdigProcess代表的三种采集方式。
2013-12-02 22:21:28 14044 18
原创 5.MIL中视频加载、播放和保存
前面我们讲解了MIL图像的加载和保存,很多时候我们在做机器视觉时要求实现录像的功能,对此MIL提供了基本的支持。本文详解了MIL开发包中如何录制视频和播放视频等功能。
2013-11-24 20:09:20 4953
原创 4.MIL中图像的加载和保存
用MIL做图像处理首先得学会如何输入图像Buffer来做处理和处理完的图像Buffer如何保存。本文详述详述了MIL中加载图像的三种方式、MIL支持的图像文件格式和MIL保存图像方法。
2013-11-24 13:39:31 9326 4
原创 3.MIL图像新建和显示
一般来说我们讲到图像会关注它的分辨率,深度,格式,类型几个方面的参数,那么在MIL中新建一个图像要考虑哪些方面呢,换句话说,调用MIL函数新建图像时,要传入哪些参数呢?数字化图像对应到计算机内存来说就是离散化的数字矩阵,在MIL中保存来说是C语言数组,数组的每一个值表明当前像素点的灰度值。MIL中并没有对应的图像新建函数,在MIL中将图像归类为一种Buffer(可以理解为就是一种C语言数组),我们主要通过调用Buffer新建函数的同时指明Buffer属性来新建图像。
2013-11-23 21:05:31 10682 8
原创 3.深入PHP中的引用
虽然常说做C/C++编程的程序员转做PHP编程很快可以上手,但是对于PHP中的引用和C++的差别比较大,这种差别更多是由于C++和PHP的变量存储结构不同造成的,本文试图详解一下PHP中的引用,对C++中的引用只是作对比时提及,如果要了解C++的引用请参考《C++ Primer》一书。理解本文最好先看一下笔者PHP变量存储结构的博文和变量赋值行为的博文,本文说明PHP引用特别是对象引用和函数返回引...
2013-11-22 16:04:23 6055 5
原创 2.深入PHP赋值行为
首先声明,我并没有去读PHP的源码,只是对于PHP的有时候诡异的表现感兴趣,找了一下开发人员laruence的博客结合PHP提供的函数debug_zval_dump刺探得到了本博客所阐述的工作机理。如果你想对PHP变量赋值行为有一个了解或想对PHP赋值行为(Copy on write 和 Change on Write)加深理解的话,本文是适合你的,比较深入的去看源代码吧。首先阅读本博客请先阅...
2013-11-21 18:05:20 3874 4
原创 1.深入PHP变量存储结构
首先声明,我并没有去读PHP的源码,只是对于PHP的有时候诡异的表现感兴趣,找了一下开发人员laruence的博客结合PHP提供的函数debug_zval_dump刺探得到了本博客所阐述的工作机理。如果你想对PHP变量存储结构有一个了解或想对PHP变量加深理解的话,本文是适合你的,比较深入的去看源代码吧。为了保证博客的连贯性,首先引用laruence关于PHP变量内部存储结构的部分内容(稍作修...
2013-11-20 21:02:59 9176 1
原创 2.MIL开发基础概念和步骤
相对于开源的Open CV来说商业化的MIL开发相对容易,只需要遵循特定的步骤即可以完成自己的开发。但是对于MIL中的一些基础概念还是要理解,不然可能在后面查看函数帮助时会混淆一些概念。
2013-10-18 21:36:00 9729 6
原创 装系统那些事儿-1-电脑的启动流程
如果对使用电脑遇到的问题做一个统计的话,我想装系统一定会是前十。笔者使用电脑这么多年,风风雨雨中自己或帮别人装了各种系统几十上百次。不管操作系统怎么更新换代,不管是DOS、Windows、Linux,不管是图形界面还是命令行界面,大家都面临一个基础性问题——装系统。所以,我决定在此将装系统的那些事儿汇总一下,不管你是安装什么系统或遇到什么问题或解决了问题但想了解原因,相信在这里大多能找到答案。都说“授人以鱼,不如授人以渔”,在开始讲诉各种系统的安装方式前,我先要讲一下电脑的启动流程
2013-09-13 19:12:22 3468
原创 VC6命令行编译配置
对于大多数在windows上写windows C/C++应用程序的人可能用的都是微软提供的VC++6.0或Visual Studio集成开发环境,但是对想为了更好地理解程序编译链接过程和习惯如linux般在命令行下工作的人来说,我们也可以配置使用命令行编译程序。事实上,基本的程序编译链接工具为一个编译器和链接器——编译器负责把C/C++代码编译成目标二进制代码(对微软编译器一般生成.obj文件
2013-08-30 10:11:12 9233 1
python父子进程
2018-08-02
MFC程序员的WTL指南
2018-07-28
WebBrowser 高级特性调整
2017-11-02
带透明度的HBITMAP和Bitmap的转换
2017-10-21
ATL常用包装类演示
2017-08-12
HbaseJavaClient.java
2020-09-10
SendMessage 无法设置ComboBox的值
2015-09-08
TA创建的收藏夹 TA关注的收藏夹
TA关注的人