shimat/opencvsharp

★ 6,101⑂ 1,243

OpenCV wrapper for .NET

About shimat/opencvsharp

shimat/opencvsharp is an open-source project on GitHub, mainly written in C#. OpenCV wrapper for .NET It currently holds 6,101 stars and 1,243 forks with 0 open issues, and was last pushed on an unknown date (repository created unknown).

Project Overview

AI Homed tracks it on the AI Image Projects board and on the AI AI Image Projects list.

GitHub Repository Details

Repository shimat/opencvsharp · default branch - · size 0 KB · watchers 0 · source: GitHub REST API and repository README

README

opencvsharp

NuGet

GitHub Actions Windows Status GitHub Actions Docker Test Status GitHub Actions manylinux Status GitHub Actions Wasm Status GitHub Actions macOS Status GitHub license

OpenCvSharp is a cross-platform .NET wrapper for OpenCV, providing a rich set of image processing and computer vision functionality. Its API is intentionally designed to stay as close as practical to the native OpenCV C++ API so that OpenCV concepts, documentation, and code can be transferred to .NET with minimal friction, while still using C# conventions such as typed enums, exceptions, and deterministic disposal.

See OpenCV C++, Python (cv2), and OpenCvSharp for the main API and data-model differences.

🚀 Try the Live Demo

Run OpenCvSharp image processing right in your browser — Blazor WebAssembly, no install needed.

Which version should I use?

OpenCvSharp is published in two parallel package families:

| Family | OpenCV | .NET targets | Status | |---|---|---|---| | OpenCvSharp5 | 5.0.x | .NET 8+ | Active development — recommended for new projects | | OpenCvSharp4 | 4.13.0 | .NET Framework 4.6.1+, .NET Standard 2.0/2.1, .NET 8+ | Maintenance — for .NET Framework or older runtimes |

Both families share the same package layout: every OpenCvSharp5. package has an OpenCvSharp4. counterpart. The examples below use OpenCvSharp5; replace 5 with 4 for the OpenCvSharp4 family.

🔄 Already using OpenCvSharp4? See the Migration Guide (4 → 5) for target framework changes, package/namespace renames, and OpenCV 5 API changes.

Quick Start

Windows (x64)

dotnet add package OpenCvSharp5.Windows

Windows (ARM64 — Snapdragon X and other arm64 devices)

dotnet add package OpenCvSharp5
dotnet add package OpenCvSharp5.runtime.win-arm64

Linux / Ubuntu

dotnet add package OpenCvSharp5
dotnet add package OpenCvSharp5.official.runtime.linux-x64

optional headless profile (full module set, no GTK3/X11 dependency)

dotnet add package OpenCvSharp5.official.runtime.linux-x64.headless

optional slim profile (smaller native dependency surface)

dotnet add package OpenCvSharp5.official.runtime.linux-x64.slim

macOS

dotnet add package OpenCvSharp5

Intel (x64):

dotnet add package OpenCvSharp5.runtime.osx.x64

Apple Silicon (arm64):

dotnet add package OpenCvSharp5.runtime.osx.arm64

For more installation options, see the Installation section below, or the full NuGet package list.

Features

Target OpenCV

Requirements

PS1> Install-WindowsFeature Server-Media-Foundation

OpenCvSharp won't work on Unity and Xamarin platforms. For Unity, please consider using OpenCV for Unity or some other solutions.

OpenCvSharp does not support CUDA. If you want to use CUDA features, you need to customize the native bindings yourself.

OpenCV's OpenCL Transparent API can be used through UMat. See OpenCL Acceleration with UMat for runtime diagnostics and benchmarking guidance.

Installation

Windows x64

Add OpenCvSharp5 and OpenCvSharp5.runtime.win NuGet packages to your project. Alternatively, you can use the OpenCvSharp5.Windows all-in-one package. For a smaller feature profile, pair OpenCvSharp5 with OpenCvSharp5.runtime.win.slim, or use the all-in-one OpenCvSharp5.Windows.Slim package.

Windows ARM64 (Snapdragon X Elite and other arm64 devices)

Add OpenCvSharp5 and OpenCvSharp5.runtime.win-arm64 NuGet packages to your project. For a smaller feature profile, use OpenCvSharp5.runtime.win-arm64.slim instead.
Note: FFmpeg-based video I/O is not available in the ARM64 packages because no ARM64 Windows prebuilt is provided by the upstream OpenCV project. All other OpenCV modules are included in the full package.

Linux (Ubuntu and other distributions)

Add OpenCvSharp5 and OpenCvSharp5.official.runtime.linux-x64 NuGet packages to your project. This package uses the portable linux-x64 RID and works with .NET 8+ publish/deploy workflows out of the box.
dotnet new console -n ConsoleApp01
cd ConsoleApp01
dotnet add package OpenCvSharp5
dotnet add package OpenCvSharp5.official.runtime.linux-x64

or headless profile (full module set, no GTK3/X11 dependency):

dotnet add package OpenCvSharp5.official.runtime.linux-x64.headless

or slim profile:

dotnet add package OpenCvSharp5.official.runtime.linux-x64.slim

-- edit Program.cs --- #

dotnet run

macOS (Intel and Apple Silicon)

Add OpenCvSharp5 and the runtime package matching your architecture:
dotnet new console -n ConsoleApp01
cd ConsoleApp01
dotnet add package OpenCvSharp5

Intel (x64):

dotnet add package OpenCvSharp5.runtime.osx.x64

Apple Silicon (arm64):

dotnet add package OpenCvSharp5.runtime.osx.arm64

--- edit Program.cs ---

dotnet run
Note: The macOS packages include FFmpeg, Tesseract, Freetype, and all standard OpenCV modules, statically linked.

Headless profile (Linux only)

OpenCvSharp5.official.runtime.linux-x64.headless keeps the same module set as the full Linux package (videoio, dnn, ml, contrib, stitching, barcode, ...); only highgui is disabled, so the package has no GTK3/X11 dependency. Use it instead of the full package for containerized/headless services that need more than the slim module set below (e.g. VideoCapture) but never call highgui.

Slim profile module coverage

The slim runtime packages keep a practical subset while reducing runtime dependencies.

This profile is used by:

Usage

For step-by-step guides, package selection, and troubleshooting, see the OpenCvSharp documentation. More complete programs are available in the samples repository.

Always remember to release Mat and other IDisposable resources using the using syntax:

// Edge detection by Canny algorithm
using OpenCvSharp;

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(); }

Note: chained Mat arithmetic is leak-free

Mat arithmetic operators (+, -, *, /, the comparison and bitwise operators, T(), Inv(), Mul(), Abs(), Eye/Zeros/Ones, ...) return a purely managed, lazily-evaluated expression tree (MatExpr) that holds no unmanaged resources. The native cv::MatExpr chain is built only when the expression is materialized — when it is assigned to a Mat, or passed where a Mat/InputArray is expected — and every native intermediate is disposed immediately during that evaluation.

As a result, chained expressions never leak: you only need using on your inputs and on the final Mat. The intermediate expression nodes require no disposal.

using var src = new Mat("lenna.png", ImreadModes.Grayscale);

// The intermediate (src * 0.8) holds no native resource; nothing leaks. using Mat dst = 255 - src * 0.8;

using var mat1 = new Mat(new Size(100, 100), MatType.CV_8UC3, new Scalar(0));
using Mat mat3 = 255 - mat1 * 0.8;

using var canny = new Mat(); Cv2.Canny(src, canny, 50, 200); // an expression can be passed directly to a Cv2 method

Code samples

https://github.com/shimat/opencvsharp_samples/

Interactive browser-based samples (Blazor WebAssembly) are maintained separately at https://github.com/shimat/opencvsharp_blazor_sample/, with a live demo.

Documentation

https://shimat.github.io/opencvsharp/

NuGet

Packages are published in two parallel families: **OpenCvSharp5. (OpenCV 5.x, .NET 8+) and OpenCvSharp4.** (OpenCV 4.13.0; also supports .NET Framework / .NET Standard). The tables below list the OpenCvSharp5 packages — each has an identically-named OpenCvSharp4.* counterpart.

Managed libraries

| Package | Description | |---------|-------------| |OpenCvSharp5| OpenCvSharp core libraries | |OpenCvSharp5.GdipExtensions| GDI+ (System.Drawing) Extensions | |OpenCvSharp5.WpfExtensions| WPF Extensions | |OpenCvSharp5.AvaloniaExtensions| Avalonia Extensions (cross-platform) | |OpenCvSharp5.Windows| All-in-one package for Windows | |OpenCvSharp5.Windows.Slim| All-in-one slim package for Windows |

Native bindings

| Package | Description | |---------|-------------| |OpenCvSharp5.runtime.win| Native bindings for Windows x64 | |OpenCvSharp5.runtime.win.slim| Slim native bindings for Windows x64, with core,imgproc,imgcodecs,calib3d,features2d,flann,objdetect,photo,ml,video,barcode enabled | |OpenCvSharp5.runtime.win-arm64| Native bindings for Windows ARM64 (Snapdragon X and other arm64 devices). FFmpeg not included. | |OpenCvSharp5.runtime.win-arm64.slim| Slim native bindings for Windows ARM64, with core,imgproc,imgcodecs,calib3d,features2d,flann,objdetect,photo,ml,video,barcode enabled | |OpenCvSharp5.official.runtime.linux-x64| Native bindings for Linux x64 (portable RID, recommended). Built on manylinux_2_28. Includes FFmpeg and Tesseract statically linked. Requires GTK3 runtime (libgtk-3.so.0) for highgui (Cv2.ImShow etc.). | |OpenCvSharp5.official.runtime.linux-x64.headless| Headless native bindings for Linux x64 (portable RID). Same module set as the full package, but highgui is disabled, so it has no GTK3/X11 dependency. | |OpenCvSharp5.official.runtime.linux-x64.slim| Slim native bindings for Linux x64 (portable RID), with core,imgproc,imgcodecs,calib3d,features2d,flann,objdetect,photo,ml,video,barcode enabled. No external runtime dependencies. | |OpenCvSharp5.runtime.linux-arm64| Native bindings for Linux ARM64 (AArch64) | |OpenCvSharp5.runtime.wasm| Native bindings for WebAssembly | |OpenCvSharp5.runtime.osx.x64| Native bindings for macOS Intel (x64). Includes FFmpeg, Tesseract, HDF, and Freetype. | |OpenCvSharp5.runtime.osx.arm64| Native bindings for macOS Apple Silicon (arm64). Includes FFmpeg, Tesseract, HDF, and Freetype. |

Note: Windows x86 (32-bit) support has been dropped as of the OpenCV 4.13.0 release series.
The OpenCvSharp5.runtime.win and OpenCvSharp5.runtime.win.slim packages now ship x64-only native binaries.
Users requiring x86 Windows support should stay on the last OpenCV 4.12.x-based packages.

Native binding (OpenCvSharpExtern.dll / libOpenCvSharpExtern.so / libOpenCvSharpExtern.dylib) is required for OpenCvSharp to work. To use OpenCvSharp, you should add both OpenCvSharp5 and OpenCvSharp5.runtime.* packages to your project. Currently, native bindings for Windows x64/ARM64, Linux x64/ARM64, macOS x64/arm64, and WebAssembly are available.

Docker images

https://github.com/shimat?tab=packages

OpenCvSharp Build Instructions

If you want to build OpenCV and OpenCvSharp from source (Windows or Ubuntu), or customize a build for an embedded (ARM) platform, see Build Instructions.

Donations

If you find the OpenCvSharp library useful and would like to show your gratitude by donating, here are some donation options. Thank you.

https://github.com/sponsors/shimat

GitHub Stars & Activity

6,101Stars
1,243Forks
0Open issues
C#Language

GitHub Popularity

GitHub stars6,101
Forks1,243
Open issues0
Primary languageC#
License-
Stars gained today0
Created-
Last pushed-

Trending History

Trending statusnot on today's boards

Related AI Projects

1

opencv / opencv

C++★ 90,909⑂ 57,033
2

ultralytics / ultralytics

Python★ 61,829⑂ 11,787
3

ultralytics / yolov5

Python★ 58,057⑂ 17,469
4

roboflow / supervision

Python★ 50,960⑂ 4,848
5
6

Anil-matcha / Open-Generative-AI

JavaScript★ 28,946⑂ 5,267
7

lucidrains / vit-pytorch

Python★ 25,514⑂ 3,495
8

junyanz / pytorch-CycleGAN-and-pix2pix

Python★ 25,244⑂ 6,567

More AI Rankings