Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

OpenCV wrapper for .NET

License

NotificationsYou must be signed in to change notification settings

shimat/opencvsharp

Repository files navigation

opencvsharp

Github Actions Windows StatusGithub Actions Ubuntu StatusGitHub license

Old versions of OpenCvSharp are stored inopencvsharp_2410.

NuGet

Managed libraries

PackageDescriptionLink
OpenCvSharp4OpenCvSharp core librariesNuGet version
OpenCvSharp4.ExtensionsGDI+ ExtensionsNuGet version
OpenCvSharp4.WpfExtensionsWPF ExtensionsNuGet version
OpenCvSharp4.WindowsAll-in-one package for Windows (except UWP)NuGet version

Native bindings

PackageDescriptionLink
OpenCvSharp4.runtime.winNative bindings for Windows x64/x86 (except UWP)NuGet version
OpenCvSharp4.runtime.uwpNative bindings for UWP (Universal Windows Platform) x64/x86/ARMNuGet version
OpenCvSharp4.official.runtime.linux-x64Native bindings for Linux x64NuGet version
OpenCvSharp4.runtime.linux-armNative bindings for Linux ArmNuGet version
OpenCvSharp4.runtime.wasmNative bindings for WebAssemblyNuGet version

Native binding (OpenCvSharpExtern.dll / libOpenCvSharpExtern.so) is required to work OpenCvSharp. To use OpenCvSharp, you should add bothOpenCvSharp4 andOpenCvSharp4.runtime.* packages to your project. Currently, native bindings for Windows, UWP and Ubuntu are released.

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

OpenCvSharp3-AnyCPU /OpenCvSharp3-WithoutDll /OpenCvSharp-AnyCPU /OpenCvSharp-WithoutDll

Docker images

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

Installation

Windows (except UWP)

AddOpenCvSharp4 andOpenCvSharp4.runtime.win NuGet packages to your project. You can useOpenCvSharp4.Windows instead.

UWP

AddOpenCvSharp4 andOpenCvSharp4.runtime.uwp NuGet packages to your project. Note thatOpenCvSharp4.runtime.win andOpenCvSharp4.Windows don't work for UWP.

Ubuntu 22.04

AddOpenCvSharp4 andOpenCvSharp4.runtime.ubuntu.22.04.x64 NuGet packages to your project.

dotnet new console -n ConsoleApp01cd ConsoleApp01dotnet add package OpenCvSharp4dotnet add package OpenCvSharp4_.runtime.ubuntu.22.04-x64# -- edit Program.cs --- # dotnet run

Downloads

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

Target OpenCV

Requirements

PS1> Install-WindowsFeature Server-Media-Foundation

OpenCvSharp won't work on Unity and Xamarin platform. For Unity, please consider usingOpenCV 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.

Usage

For more details, seesamples andWiki pages.

Always remember to release Mat instances! Theusing syntax is useful.

// C# 8// Edge detection by Canny algorithmusingOpenCvSharp;classProgram{staticvoidMain(){usingvarsrc=newMat("lenna.png",ImreadModes.Grayscale);        usingvardst=newMat();Cv2.Canny(src,dst,50,200);using(newWindow("src image",src))using(newWindow("dst image",dst)){Cv2.WaitKey();}}}

As mentioned above, objects of classes, such as Mat and MatExpr, have unmanaged resources and need to be manually released by calling the Dispose() method. Worst of all, the +, -, *, and other operators create new objects each time, and these objects need to be disposed, or there will be memory leaks. Despite having the using syntax, the code still looks very verbose.

Therefore, a ResourcesTracker class is provided. The ResourcesTracker implements the IDisposable interface, and when the Dispose() method is called, all resources tracked by the ResourcesTracker are disposed. The T() method of ResourcesTracker can trace an object or an array of objects, and the method NewMat() is like T(new Mat(...). All the objects that need to be released can be wrapped with T().For example: t.T(255 - t.T(picMat * 0.8)) . Example code is as following:

using(vart=newResourcesTracker()){Matmat1=t.NewMat(newSize(100,100),MatType.CV_8UC3,newScalar(0));Matmat3=t.T(255-t.T(mat1*0.8));Mat[]mats1=t.T(mat3.Split());Matmat4=t.NewMat();Cv2.Merge(newMat[]{mats1[0],mats1[1],mats1[2]},mat4);}using(vart=newResourcesTracker()){varsrc=t.T(newMat(@"lenna.png",ImreadModes.Grayscale));vardst=t.NewMat();Cv2.Canny(src,dst,50,200);varblurredDst=t.T(dst.Blur(newSize(3,3)));t.T(newWindow("src image",src));t.T(newWindow("dst image",blurredDst));Cv2.WaitKey();}

Features

  • 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 fromMat intoBitmap(GDI+) orWriteableBitmap(WPF).

Code samples

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

API Documents

http://shimat.github.io/opencvsharp/api/OpenCvSharp.html

OpenCvSharp Build Instructions

Windows

  • Install Visual Studio 2022 or later
    • VC++ features are required.
  • Rundownload_opencv_windows.ps1 to download OpenCV libs and headers fromhttps://github.com/shimat/opencv_files. Those lib files are precompiled by the owner of OpenCvSharp using GitHub Actions.
.\download_opencv_windows.ps1
  • Build OpenCvSharp
    • OpenOpenCvSharp.sln and build

How to customize OpenCV binaries yourself

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 theopencv_files repository. See the README.

  • git clone --recursive https://github.com/shimat/opencv_files
  • Editbuild_windows.ps1 orbuild_uwp.ps1 to customize the CMake parameters .
  • Run the PowerShell script.

Ubuntu

git clone https://github.com/shimat/opencvsharp.gitcd opencvsharpgit fetch --all --tags --prune && git checkout ${OPENCVSHARP_VERSION}
  • Build native wrapperOpenCvSharpExtern
cd opencvsharp/srcmkdir buildcd buildcmake -D CMAKE_INSTALL_PREFIX=${YOUR_OPENCV_INSTALL_PATH} ..make -j make install

You should add reference toopencvsharp/src/build/OpenCvSharpExtern/libOpenCvSharpExtern.so

export LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:/home/shimat/opencvsharp/src/build/OpenCvSharpExtern"
  • AddOpenCvSharp4 NuGet package to your project
dotnet new console -n ConsoleApp01cd ConsoleApp01dotnet add package OpenCvSharp4# -- edit Program.cs --- # dotnet run

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

Sponsor this project

 

Packages

 
 
 

Contributors72

Languages


[8]ページ先頭

©2009-2025 Movatter.jp