c#实现SharedMatting抠图算法

内容简介

       将Alpha Matting抠图算法由c++ 版本移植至c#环境。 主要采用OpenCV的C#版本Emgu取代c++支撑的OpenCV。

参考资料

  1. http://www.inf.ufrgs.br/~eslgastal/SharedMatting/

这个网页是算法的论文介绍页,可以从该网页下载到论文原文以及测试用图以及linux下的Demo。

  1. https://github.com/np-csu/AlphaMatting

我从该网页下载了Alpha Matting算法的c++源码。

  1. https://www.cnblogs.com/Imageshop/p/3550185.html

这是我在查询Alpha Matting算法资料时看见的比较友善的算法介绍。作者优化了C++版的算法。

我的实现效果

c#实现SharedMatting抠图算法_第1张图片

c#实现SharedMatting抠图算法_第2张图片

c#实现SharedMatting抠图算法_第3张图片

c#实现SharedMatting抠图算法_第4张图片

c#实现SharedMatting抠图算法_第5张图片

实验环境

系统: Windows 8.1 专业版

工具:Visual Studio 2017

Emgu:emgucv-windesktop 3.2.0.2682

C#测试工程: WPF工程项目

避免采坑

  1. 最好不要用最新版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

vectorPoint>&

List

vector<

你可能感兴趣的:(程序源码(相关),专业文档,抠图算法,c#抠图实现,c#调用OpenCV)