WPF 调用 OpenCV 库指南
OpenCV 是一个强大的计算机视觉库,WPF 是 Windows 平台的 UI 框架。将两者结合可以实现强大的图像处理和计算机视觉应用。本文将详细介绍如何在 WPF 应用程序中集成和使用 OpenCV 库。
一、准备工作
1. 安装 OpenCV
方法一:通过 NuGet 安装
- 在 Visual Studio 中打开你的 WPF 项目
- 右键点击解决方案资源管理器 → "管理 NuGet 程序包"
- 搜索并安装以下包:
OpenCvSharp4
OpenCvSharp4.runtime.win
OpenCvSharp4.Windows
(可选,提供 WPF 集成支持)
方法二:手动安装
- 从 OpenCV 官网 下载 Windows 版本
- 解压到本地目录
- 配置环境变量(可选)
2. 添加必要的引用
如果使用 NuGet 安装,这些引用会自动添加。如果手动集成,需要:
- 添加 OpenCvSharp4.dll 和 OpenCvSharp4.runtime.win.dll 到项目引用
- 将 x64 或 x86 的 OpenCV DLLs 复制到输出目录
二、基本集成步骤
1. 配置项目属性
- 右键项目 → 属性 → 生成
- 确保目标平台与 OpenCV 运行时匹配(x86 或 x64)
- 在"生成事件"→"后期生成事件"中添加:
xcopy /Y /R "$(SolutionDir)packages\OpenCvSharp4.runtime.win.4.5.5.20211231\build\x64\vc15\bin\*.dll" "$(TargetDir)"
2. 创建 OpenCV 辅助类
// OpenCvHelper.cs
using OpenCvSharp;
using System;
using System.Drawing;
using System.Windows.Media.Imaging;
public static class OpenCvHelper
{
// Mat 转换为 WPF 的 BitmapImage
public static BitmapImage MatToBitmapImage(Mat mat)
{
// 转换为 Bitmap
var bitmap = OpenCvSharp.Extensions.BitmapConverter.ToBitmap(mat);
// 转换为 WPF BitmapImage
var bitmapImage = new BitmapImage();
using (var memory = new System.IO.MemoryStream())
{
bitmap.Save(memory, System.Drawing.Imaging.ImageFormat.Png);
memory.Position = 0;
bitmapImage.BeginInit();
bitmapImage.StreamSource = memory;
bitmapImage.CacheOption = BitmapCacheOption.OnLoad;
bitmapImage.EndInit();
}
return bitmapImage;
}
// WPF 的 BitmapImage 转换为 Mat
public static Mat BitmapImageToMat(BitmapImage bitmapImage)
{
// 先转换为 System.Drawing.Bitmap
va