最近有点想法,需要使用opencv,同时用C#写界面。又不想自己做所有接口。
言归正传
opencvsharp:如下版本
GitHub - shimat/opencvsharp at 4.1.0.20190417https://github.com/shimat/opencvsharp/tree/4.1.0.20190417opencv:版本4.1.0
https://github.com/opencv/opencv/tree/4.1.0https://github.com/opencv/opencv/tree/4.1.0编译Opencv4.0 Windows10(64位)下用CMake编译OpenCV源代码 参考以下两个链接(112条消息) Windows10(64位)下用CMake编译OpenCV源代码_Rustone的博客-CSDN博客
https://blog.csdn.net/m0_37360684/article/details/89979332(113条消息) Windows下Visual Studio 编译OpenCV详细教程(win10+vs2017+opencv4.5.2)(OpenCV最新版)(特别适合无法科学上网的童鞋们)_excelNo1的博客-CSDN博客_windows编译opencv
https://blog.csdn.net/excelNo1/article/details/118142075
同时在他的基础上,我去掉了所有test,python 和java.
同时build_shared_libs修改为False。这个很重要
cvdef.h file 添加如下代码
#ifndef CVAPI_EXPORTS
# define CVAPI_EXPORTS
#endif
同时使用IncrediBuild加快编译速度(参考项)
编译好Opencv,打开下载的OpenCvSharp解决方案
修改OpenCvSharpExtern project属性
如下图修改include和staticlib路径.(刚刚生成opencv的路径). Release 同样设置.
然后整理编译所有OpenCvSharp解决方案.
把生成的动态库拷贝到C#项目的Debug\\dll\\x86\\目录下去,
最后测试自己的C#项目. share 部分测试代码。
string _1bmp = @"C:\Dev\GithubProject\PythonOpenCV\ContoursLearn\1.bmp";
string _138bmp = @"C:\Dev\GithubProject\PythonOpenCV\ContoursLearn\138.bmp";
Size TempleteSize = new Size();
MatOfPoint TempleteContour = null;
private void button1_Click(object sender, EventArgs e)
{
using (var src = new Mat(_1bmp))
{
TempleteSize = src.Size();
var srcCopy = src.CvtColor(ColorConversionCodes.RGB2GRAY);
var dst = srcCopy.Threshold(0, 255, ThresholdTypes.Otsu);
var contours = dst.FindContoursAsMat(RetrievalModes.Tree, ContourApproximationModes.ApproxNone);
var dstcopy = src.Clone();
int templeteIndex = 421;
}
}
当然你也可以直接在C#项目中直接在NuGet中安装 OpenCvSharp4.Windows
using OpenCvSharp;
using OpenCvSharp.Extensions;
using System;
using System.Windows.Forms;
namespace WindowsFormsApp7
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
string _1bmp = @"C:\Dev\GithubProject\PythonOpenCV\ContoursLearn\1.bmp";
private void Form1_Load(object sender, EventArgs e)
{
using (var src = new Mat(_1bmp))
{
pictureBox1.Image = src.ToBitmap();
}
}
}
}
运行结果如下: