零、相关说明:
首先进行一下相关说明。在“jsxyhelu.cnblogs.com/项目实战派”栏目里面出现的需求、图片和其他资源,都是我在浏览威客网站、论坛等网站的时候通过正规渠道获得的真实需求。个人觉得比较感兴趣,但是由于时间或者工作的冲突自己没有去接这些项目。但是由于这些需求都很有实现价值,所以过了一段时间,仍然拿出来练一练手,并且实现了核心模块。希望能够给浏览者一些启发。如果你认为这些图片和资源放在这里不合适,请及时联系我([email protected]),我会及时处理的。此外,我会将核心代码和技术细节尽可能将清楚,我认为这样才是最有价值的方式。如果需要原始代码,也可以和我联系。
一、原始需求:
获取屏幕上的数据的方法有多种,其中一种就是直接定下区域位置,不断对固定位置进行截图,而后通过图像识别的方法进行识别。这种方法运用场合比较广泛,当需要识别的数据不是特别复杂的时候,识别效率也能够很高。这里我尝试实现以上功能。
二、软件设计:
根据软件需要实现的功能,我选择采用“csharp编写界面+opencv编写核心功能”的模式来解决问题。chsarp方面,主要实现的功能就是“获取屏幕坐标,每隔一段时间获取指定区域截图”的效果;opencv方便主要是对截取的区域进行增强和识别。
通过修改现有的屏幕截屏软件,csharp方面达到这个目的:
(1)
就为了达到数据测试的目的,编写能够自动产生数字走动的窗体。当然这个窗体的效果是比较简单的效果,实际情况下,可能会出现较为复杂的背景,或者需要识别的字符格式更难识别。
(2)(3)
(4)
然后是识别的界面,这里是修改一个现有的截屏软件来做的。主要就是调用现有的类库,并且将其做成动态截获数据类型。
(5)
具体可以看视频。
(6)
四、小结反思:
这样一个程序,思路比较清晰,功能也比较单一,如果遇到合适场合,可能能够发挥一定的作用。写错过程中遇到的主要问题是将tesseract融合进来的时候,遇到了“不明确符号”错误;此外,在c#调用c++的dll库过程中的参数传递问题也是一直没有很好解决的,如果有对这个方面有研究的朋友,非常希望能够得到指点。
感谢阅读,希望有所帮助.
http://pan.baidu.com/s/1eQAlrNG