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

       很多朋友反馈github上的源码下载后“无法加载解决方案”的原因以及处理方法:

       原因:当时验证该项目时,添加了opencv设置的属性表,属性表中有opencv的绝对路径,解决方案在打开找不到属性表的信息时,会导致项目加载失败。

       处理方法:分别用记事本打开EasyPR\vcprojs\libeasypr.vcxproj,EasyPR\vcprojs\demo.vcxproj,EasyPR\testPR\testPR.vcxproj,搜索”PropertySheets”,删除设置该属性的所有节点,保存后关闭,再次打开解决方案即可重新加载项目。

       目前github上最新版本相应的vcxproj文件已删除相关属性表,大家可以参考上述建议解决类似的问题。

       另友情提醒:我不打算再更新该项目,该项目基于opencv3.1,若更换其他版本的opencv,会有很多错误需要修改。

       ——20220422更新

      车牌识别系统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

        回复

        • By lch

          回复

        • By xxx

          回复

  4. By 哒雪

    回复

    • By livezingy

      回复

      • By 哒雪

        回复

        • By livezingy

          回复

          • By LarryYang

        • By LarryYang

          回复

  5. By D

    回复

  6. By 蒙国飞

    回复

    • By livezingy

      回复

  7. By 影景彡

    回复

    • By livezingy

      回复

      • By MoZo

        回复

      • By 常天睿

        回复

    • By 刘雨晨

      回复

  8. By 常天睿

    回复

  9. By 常天睿

    回复

    • By livezingy

      回复

    • By lch

      回复

      • By livezingy

        回复

        • By lch

          回复

          • By livezingy

  10. By xxx

    回复

  11. By NM

    回复

  12. By 求助

    回复

    • By livezingy

      回复

发表回复

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

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据

Fork me on GitHub