内容简介
将Alpha Matting抠图算法由c++ 版本移植至c#环境。 主要采用OpenCV的C#版本Emgu取代c++支撑的OpenCV。
参考资料
这个网页是算法的论文介绍页,可以从该网页下载到论文原文以及测试用图以及linux下的Demo。
我从该网页下载了Alpha Matting算法的c++源码。
这是我在查询Alpha Matting算法资料时看见的比较友善的算法介绍。作者优化了C++版的算法。
我的实现效果
实验环境
系统: Windows 8.1 专业版
工具:Visual Studio 2017
Emgu:emgucv-windesktop 3.2.0.2682
C#测试工程: WPF工程项目
避免采坑
- 最好不要用最新版Vs2019
我刚开始采用VS2019,安装OpenCv后测试运行C++,各种不通。后续发现vs2019新建的项目自动配置为VC16 环境。 而下载的OpenCv明确指定了需要VC14或VC15. 如我下载的OpenCV: opencv-3.4.5-vc14_vc15.exe. 从名称即可看出。废了我许多不必要的尝试时间。
2、版本差异
刚开始下载OpenCV 最新的4.1.1 版本,报了很多类型错误。 建议使用3.* 的版本。 4.1.1版本我注释掉了部分OpenCv的代码,算法可以继续无差运行,但总感觉不完美,所以我替换成了3.* 的版本。
关键信息
C++类型 |
我处理成的对应c#类型 |
cv::Point |
System.Drawing.Point |
vector<cv::Point>& |
List<System.Drawing.Point> |
vector<vector<cv::Point>>& |
List<List<System.Drawing.Point>> |