Wrapper of OpenCV for .NET
Old versions of OpenCvSharp are stored in opencvsharp_2410.
Package | Description | Link |
---|---|---|
OpenCvSharp4 | OpenCvSharp core libraries | |
OpenCvSharp4.WpfExtensions | WPF Extensions | |
OpenCvSharp4.Windows | All-in-one package for Windows (except UWP) | |
OpenCvSharp4.runtime.win | Native bindings for Windows x64/x86 (except UWP) | |
OpenCvSharp4.runtime.uwp | Native bindings for UWP (Universal Windows Platform) x64/x86/ARM | |
OpenCvSharp4.runtime.ubuntu.18.04-x64 | Native bindings for Ubuntu 18.04 x64 | |
OpenCvSharp4.runtime.ubuntu.16.04-x64 (beta) | Native bindings for Ubuntu 16.04 x64. This is for Google AppEngine Flexible and made in gcr.io/google-appengine/aspnetcore:2.1 docker image. | |
OpenCvSharp4.runtime.osx.10.15-x64 | Native bindings for macOS 10.15 x64 | |
(beta packages) | Development Build Package | https://ci.appveyor.com/nuget/opencvsharp |
Native binding (OpenCvSharpExtern.dll / libOpenCvSharpExtern.so) is required to work OpenCvSharp. To use OpenCvSharp, you should add both OpenCvSharp4
and OpenCvSharp4.runtime.*
packages to your project. Currently, native bindings for Windows, UWP, Ubuntu 18.04/16.04 and macOS are released.
Packages named OpenCvSharp3-* and OpenCvSharp-* are deprecated.
OpenCvSharp3-AnyCPU / OpenCvSharp3-WithoutDll / OpenCvSharp-AnyCPU / OpenCvSharp-WithoutDll
Add OpenCvSharp4
and OpenCvSharp4.runtime.win
NuGet packages to your project. You can use OpenCvSharp4.Windows
instead.
Add OpenCvSharp4
and OpenCvSharp4.runtime.uwp
NuGet packages to your project. Note that OpenCvSharp4.runtime.win
and OpenCvSharp4.Windows
don't work for UWP.
Add OpenCvSharp4
and OpenCvSharp4.runtime.ubuntu.18.04.x64
NuGet packages to your project.
dotnet new console -n ConsoleApp01
cd ConsoleApp01
dotnet add package OpenCvSharp4
dotnet add package OpenCvSharp4.runtime.ubuntu.18.04-x64
# -- edit Program.cs --- #
dotnet run
Add OpenCvSharp4
and OpenCvSharp4.runtime.ubuntu.16.04.x64 (beta)
NuGet packages to your project.
If you do not use NuGet, get DLL files from the release page.
- .NET Framework 4.6.1 / .NET Core 2.0 / Mono
- (Windows) Visual C++ 2019 Redistributable Package
- (Windows Server) Media Foundation
PS1> Install-WindowsFeature Server-Media-Foundation
- (Ubuntu) Build OpenCV with opencv_contrib in advance. Many packages such as libjpeg must be installed in order to work. https://www.learnopencv.com/install-opencv-4-on-ubuntu-18-04/
OpenCvSharp won't work on Unity and Xamarin platform. For Unity, please consider using OpenCV for Unity or some other solutions.
OpenCvSharp does not support CUDA. If you want to use the CUDA features, you need to customize the native bindings yourself.
For more details, see samples and Wiki pages.
// C# 8
// Edge detection by Canny algorithm
using OpenCvSharp;
class Program
{
static void Main()
{
using var src = new Mat("lenna.png", ImreadModes.Grayscale);
using var dst = new Mat();
Cv2.Canny(src, dst, 50, 200);
using (new Window("src image", src))
using (new Window("dst image", dst))
{
Cv2.WaitKey();
}
}
}
- OpenCvSharp is modeled on the native OpenCV C/C++ API style as much as possible.
- Many classes of OpenCvSharp implement IDisposable. There is no need to manage unsafe resources.
- OpenCvSharp does not force object-oriented programming style on you. You can also call native-style OpenCV functions.
- OpenCvSharp provides functions for converting from
Mat
intoBitmap
(GDI+) orWriteableBitmap
(WPF).
https://github.com/shimat/opencvsharp_samples/
https://shimat.github.io/opencvsharp_docs/index.html
- Install Visual Studio 2019 or later
- VC++ features are required.
- Run
download_opencv_windows.ps1
to download OpenCV libs and headers from https://github.com/shimat/opencv_files. Those lib files are precompiled by the owner of OpenCvSharp using AppVeyor CI.
.\download_opencv_windows.ps1
- Build OpenCvSharp
- Open
OpenCvSharp.sln
and build
- Open
If you want to use some OpenCV features that are not provided by default in OpenCvSharp (e.g. GPU), you will have to build OpenCV yourself. The binary files of OpenCV for OpenCvSharp for Windows are created in the opencv_files repository. See the README.
git clone --recursive https://github.com/shimat/opencv_files
- Edit
build_windows.ps1
orbuild_uwp.ps1
to customize the CMake parameters . - Run the PowerShell script.
- Build OpenCV with opencv_contrib.
- Install .NET Core SDK. https://docs.microsoft.com/ja-jp/dotnet/core/install/linux-package-manager-ubuntu-1804
- Get OpenCvSharp source files
git clone https://github.com/shimat/opencvsharp.git
cd opencvsharp
git fetch --all --tags --prune && git checkout ${OPENCVSHARP_VERSION}
- Build native wrapper
OpenCvSharpExtern
cd opencvsharp/src
mkdir build
cd build
cmake -D CMAKE_INSTALL_PREFIX=${YOUR_OPENCV_INSTALL_PATH} ..
make -j
make install
You should add reference to opencvsharp/src/build/OpenCvSharpExtern/libOpenCvSharpExtern.so
export LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:/home/shimat/opencvsharp/src/build/OpenCvSharpExtern"
- Add
OpenCvSharp4
NuGet package to your project
dotnet new console -n ConsoleApp01
cd ConsoleApp01
dotnet add package OpenCvSharp4
# -- edit Program.cs --- #
dotnet run
Refer to the Dockerfile and Wiki pages.
Licensed under the BSD 3-Clause License.
If you find the OpenCvSharp library useful and would like to show your gratitude by donating, here are some donation options. Thank you.