车牌识别系统easyPR的MFC可视化界面

      车牌识别系统easyPR自带的demo基于win32控制台,个人认为可操作性不如可视化的操作界面。为了更好的学习这个系统和openCV,我尝试建立了一个MFC的可视化界面,目前已初步实现,现开始记录实现过程中个人认为值得分享的内容。

      我初步规划的easyPR的MFC可视化界面功能如下:用户可以指定当前需要识别的图片,在界面中可以观察到源图像,识别结果,可以选择观察车牌识别的中间过程,中间过程可以显示在源图片的左上角,例如车牌定位,车牌分割,字符分割等等,界面如下图所示。

1. 建立easyPR可视化界面的基本流程

1.1 在已编译成功的easyPR解决方案中添加新项目testPR,我添加的是基于对话框的VC++ MFC应用程序,将新添加的项目设置为启动项目。

1.2 为新添加的项目添加VC++包含openCV相关的目录和库文件,添加方法请参考EasyPR(车牌识别系统)在win10&VS2013&X64环境下的编译方法

1.3 在解决方案资源管理器中,选中testPR,右键单击–>生成依赖项–>项目依赖项,设置libeasypr为testPR的依赖项目。

Project dependency

1.4 在libeasypr中有大量的加载图片与资源的代码,用的是相对路径。因此需要在testPR的项目属性–>配置属性–>C/C++ –>常规–>附加包含目录中添加”$(SolutionDir)include”,这样设定后,libeasypr中的相对路径才会生效;如果此处不更改,将会出现各种错误。

testPR property

1.5 在testPRDlg.cpp文件中添加如下头文件和命名空间。

1.6 双击Result按钮,在该按钮的在实现函数中添加如下代码,试用libeasypr的车牌识别功能。

1.7 完成上述步骤之后可以试编译一下,如果设置正确的话,此时显示识别结果的编辑框中应该会出现正确的车牌识别结果。

2. 在实现easyPR可视化界面过程中的注意事项

2.1 Cstring string const char*的相互转化

通过openfile dialog获取的图片途径是CString类型,在picture control控件中需要的路径是const char*类型,opencv的imread函数需要的输入路径是string。这三种格式之间的转换方法如下:

2.2 在picture control控件中显示图片

    我在MFC的picture control控件中实现显示图片时,用到了CvvImage类,该类在openCV3.0中已经不存在,不过可以下载CvvImage.h和CvvImage.cpp来实现该功能,具体的代码会发布在Github的easyPR的仓库中。

2.3 picture control控件和对话框随加载图片的尺寸来更改自身的尺寸。
   目前源图加载时,对话框和picture control的尺寸会根据源图尺寸来进行调整;对话框中的其他控件并不会调整。在加载图片时,MFC对话框会触发一次重绘事件,此时获取对话框句柄是空。因此需要在界面初始化时,获取到对话框的尺寸,加载图片时直接根据图片尺寸更新对话框尺寸,具体的代码会发布在Github的easyPR的仓库中。

Comments

  1. By 侯先生啦

    回复

    • By livezingy

      回复

  2. By 张宇

    回复

    • By livezingy

      回复

  3. By 张宇

    回复

    • By livezingy

      回复

    • By D

      回复

      • By livezingy

        回复

  4. By 哒雪

    回复

    • By livezingy

      回复

      • By 哒雪

        回复

        • By livezingy

          回复

          • By LarryYang

        • By LarryYang

          回复

  5. By D

    回复

  6. By 蒙国飞

    回复

    • By livezingy

      回复

  7. By 影景彡

    回复

    • By livezingy

      回复

      • By MoZo

        回复

      • 回复

  8. By 常天睿

    回复

  9. By 常天睿

    回复

发表评论

电子邮件地址不会被公开。 必填项已用*标注

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Fork me on GitHub