Skip to content
.NET Framework wrapper for OpenCV
C# C++ C Other
Branch: master
Clone or download

Latest commit

shimat Merge pull request #872 from matthias-bl/master
Add MergeMertens, MergeExposures, MergeDebevec
Latest commit 6be49a9 Feb 27, 2020


Type Name Latest commit message Commit time
Failed to load latest commit information.
.circleci fix NotSupportedUnicodeFileName Feb 12, 2020
.github Create FUNDING.yml Jan 8, 2020
docker github actions: 18.04 Dec 23, 2019
nuget add netstandard2_1 Feb 12, 2020
opencv_files_420 @ a3a5889 update opencv_files_420 Dec 22, 2019
samples @ b95f908 fix tools for snupkg Feb 8, 2020
src fix NotSupportedUnicodeFileName Feb 12, 2020
test/OpenCvSharp.Tests change image Feb 14, 2020
tool add netstandard2_1 Feb 12, 2020
web/img replaced master from OpenCV2 to OpenCV3 Aug 29, 2015
.gitattributes Changed sample directory; Created unit tests Dec 21, 2013
.gitignore git submodule deinit tesseract Nov 16, 2018
.gitmodules re-add submodule Dec 22, 2019
.travis.yml restore cis Dec 23, 2019
LICENSE Update LICENSE Mar 26, 2019
MergeDebevec.cs Add MergeMertens, MergeExposures, MergeDebevec Feb 26, 2020
MergeExposures.cs Add MergeMertens, MergeExposures, MergeDebevec Feb 26, 2020
MergeMertens.cs Add MergeMertens, MergeExposures, MergeDebevec Feb 26, 2020
NativeMethods_photo_HDR.cs Add MergeMertens, MergeExposures, MergeDebevec Feb 26, 2020
OpenCvSharp.shfbproj shfbproj minor change Jun 28, 2017
OpenCvSharp.sln trx2junit Feb 12, 2020
OpenCvSharp.sln.DotSettings fix Feb 12, 2020 Update Jan 8, 2020
Tonemap.cs Add MergeMertens, MergeExposures, MergeDebevec Feb 26, 2020
appveyor.yml remove snupkg from Windows.nuget Feb 8, 2020
photo_HDR.h Add MergeMertens, MergeExposures, MergeDebevec Feb 26, 2020

OpenCvSharp CircleCI Build status Actions Status GitHub license

Cross platform wrapper of OpenCV for .NET Framework.

Old versions of OpenCvSharp are stored in opencvsharp_2410.



Package Description Link
OpenCvSharp4 OpenCvSharp core libraries NuGet version
OpenCvSharp4.Windows All-in-one package for Windows (except UWP) NuGet version Native bindings for Windows x64/x86 (except UWP) NuGet version
OpenCvSharp4.runtime.uwp Native bindings for UWP (Universal Windows Platform) x64/x86/ARM NuGet version
OpenCvSharp4.runtime.ubuntu.18.04-x64 Native bindings for Ubuntu 18.04 x64 NuGet version
OpenCvSharp4.runtime.ubuntu.16.04-x64 (beta) Native bindings for Ubuntu 16.04 x64. This is for Google AppEngine Flexible and made in docker image. NuGet version
(beta packages) Development Build Package

Native binding (OpenCvSharpExtern.dll / 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 and Ubuntu 16.04 are released.

Packages named OpenCvSharp3-* and OpenCvSharp-* are deprecated.

Windows (except UWP)

Add OpenCvSharp4 and NuGet packages to your project. You can use OpenCvSharp4.Windows instead.


Add OpenCvSharp4 and OpenCvSharp4.runtime.uwp NuGet packages to your project. Note that and OpenCvSharp4.Windows don't work for UWP.

Ubuntu 18.04

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

Ubuntu 16.04 / Google AppEngine Flexible (beta)

Add OpenCvSharp4 and OpenCvSharp4.runtime.ubuntu.16.04.x64 NuGet packages to your project.


If you do not use NuGet, get DLL files from the release page.


OpenCvSharp may not work on Unity platform. Please consider using OpenCV for Unity

Code samples




For more details, see samples and Wiki pages.

// Edge detection by Canny algorithm
using OpenCvSharp;

class Program 
    static void Main() 
        Mat src = new Mat("lenna.png", ImreadModes.Grayscale);
        // Mat src = Cv2.ImRead("lenna.png", ImreadModes.Grayscale);
        Mat dst = new Mat();
        Cv2.Canny(src, dst, 50, 200);
        using (new Window("src image", src)) 
        using (new Window("dst image", dst)) 


  • 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 into Bitmap(GDI+) or WriteableBitmap(WPF).

OpenCvSharp Build Instructions


  • Install Visual Studio 2019 or later
    • VC++ features are required.
  • Get all submodules
git submodule update --init --recursive
  • Build OpenCvSharp
    • Open OpenCvSharp.sln and build

Ubuntu 18.04

git clone
cd opencvsharp
git fetch --all --tags --prune && git checkout ${OPENCVSHARP_VERSION}
  • Build native wrapper OpenCvSharpExtern
cd opencvsharp/src
mkdir build
cd build
make -j 
make install

You should add reference to opencvsharp/src/build/OpenCvSharpExtern/

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

Older Ubuntu

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.

Type Address
BTC (Bitcoin) 3EWhyNe3xzNNrbUgk4nXAVEkaWdpGncotc
BCH (Bitcoin Cash) 3EWhyNe3xzNNrbUgk4nXAVEkaWdpGncotc
ETH (Ethereum) 0x8a6089d60812ec88822d81bc6c65ba4ae63ea269
LTC (Litecoin) LLpmBjjVGZf93MEohEZpkADMpnyqAS3iQC
You can’t perform that action at this time.