• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

opencvsharp: Cross platform wrapper of OpenCV for .NET Framework.

原作者: [db:作者] 来自: 网络 收藏 邀请

开源软件名称:

opencvsharp

开源软件地址:

https://gitee.com/zl33842901/opencvsharp

开源软件介绍:

opencvsharp

Github Actions Windows Status Github Actions Ubuntu Status Github Actions MacOS Status GitHub license

Old versions of OpenCvSharp are stored in opencvsharp_2410.

NuGet

PackageDescriptionLink
OpenCvSharp4OpenCvSharp core librariesNuGet version
OpenCvSharp4.WpfExtensionsWPF ExtensionsNuGet version
OpenCvSharp4.WindowsAll-in-one package for Windows (except UWP)NuGet version
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.runtime.ubuntu.18.04-x64Native bindings for Ubuntu 18.04 x64NuGet version
OpenCvSharp4.runtime.osx.10.15-x64Native bindings for macOS 10.15 x64NuGet version
OpenCvSharp4.runtime.linux-armNative bindings for Linux ArmNuGet version

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 and macOS are released.

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

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

Docker images

https://hub.docker.com/u/shimat

Installation

Windows (except UWP)

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

UWP

Add OpenCvSharp4 and OpenCvSharp4.runtime.uwp NuGet packages to your project. Note that OpenCvSharp4.runtime.win 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 ConsoleApp01cd ConsoleApp01dotnet add package OpenCvSharp4dotnet add package OpenCvSharp4.runtime.ubuntu.18.04-x64# -- edit Program.cs --- # dotnet run

Google AppEngine Flexible (Ubuntu 16.04)

Some Docker images are provided to use OpenCvSharp with AppEngine Flexible. The native binding (libOpenCvSharpExtern) is already built in the docker image and you don't need to worry about it.

FROM shimat/appengine-aspnetcore3.1-opencv4.5.0:20201030ADD ./ /app ENV ASPNETCORE_URLS=http://*:${PORT} WORKDIR /app ENTRYPOINT [ "dotnet", "YourAspNetCoreProject.dll" ]

Ubuntu 18.04 Docker image

You can use the shimat/ubuntu18-dotnetcore3.1-opencv4.5.0 docker image.This issue may be helpful: https://github.com/shimat/opencvsharp/issues/920

Downloads

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

Target OpenCV

Requirements

PS1> Install-WindowsFeature Server-Media-Foundation

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.

Usage

For more details, see samples and Wiki pages.

Always remember to release Mat instances! The using syntax is useful.

// C# 8// Edge detection by Canny algorithmusing 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();        }    }}

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 (var t = new ResourcesTracker()){    Mat mat1 = t.NewMat(new Size(100, 100), MatType.CV_8UC3, new Scalar(0));    Mat mat3 = t.T(255-t.T(mat1*0.8));    Mat[] mats1 = t.T(mat3.Split());    Mat mat4 = t.NewMat();    Cv2.Merge(new Mat[] { mats1[0], mats1[1], mats1[2] }, mat4);}using (var t = new ResourcesTracker()){    var src = t.T(new Mat(@"lenna.png", ImreadModes.Grayscale));    var dst = t.NewMat();    Cv2.Canny(src, dst, 50, 200);    var blurredDst = t.T(dst.Blur(new Size(3, 3)));    t.T(new Window("src image", src));    t.T(new Window("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 from Mat into Bitmap(GDI+) or WriteableBitmap(WPF).

Code samples

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

Documents

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

OpenCvSharp Build Instructions

Windows

  • 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

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

  • git clone --recursive https://github.com/shimat/opencv_files
  • Edit build_windows.ps1 or build_uwp.ps1 to customize the CMake parameters .
  • Run the PowerShell script.

Ubuntu 18.04

git clone https://github.com/shimat/opencvsharp.gitcd opencvsharpgit fetch --all --tags --prune && git checkout ${OPENCVSHARP_VERSION}
  • Build native wrapper OpenCvSharpExtern
cd opencvsharp/srcmkdir buildcd buildcmake -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 ConsoleApp01cd ConsoleApp01dotnet add package OpenCvSharp4# -- edit Program.cs --- # dotnet run

Older Ubuntu

Refer to the Dockerfile and Wiki pages.

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


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap