一直没怎么用过c#做开发,加上这次一共用c#做过两个程序,第一个是关于修改网页的,用C#结合com组件还是很方便的。这次帮别人demo一个用c#实现图片裁剪和半透明融合的功能演示程序。功能挺简单的,就是把一张固定大小的图片先做边缘羽化,然后贴到一个圆形泡泡形状的底图上,最后把结果半透明融合到一张背景图上。
C#实现图像的羽化、将图片裁剪复制到一个圆形图片这些都挺简单的,最后一步融合到背景图上需要用到opencv的seamlessClone方法。网上搜索c#使用opencv的方法有很多,一种是直接使用opencv的C#版本,一种是先把opencv的方法封装到一个dll然后用c#调用这个dll导出的方法。对于我这个需求,后一种方法最合算了。我只用到了一个方法而已。vc中怎么使用opencv就不说了,直接开始吧。
第一先用VC创建一个win32项目,选择生成dll动态链接库。添加一个cpp文件,代码如下。
// opencvImage.cpp : Defines the exported functions for the DLL application.
//
#include "stdafx.h"
#include <opencv2/core/core.hpp>
#include "opencv2/photo.hpp"
#ifdef _DEBUG
#pragma comment(lib,"opencv_core331d.lib")
#pragma comment(lib,"opencv_imgproc331d.lib")
#pragma comment(lib,"opencv_photo331d.lib")
#else
#pragma comment(lib,"opencv_core331.lib")
#pragma comm