VS中OpenCVSharp的配置及測試


1、什么是OpenCVSharp

OpenCVSharp有一名日本工程師開發,項目地址為:https://github.com/shimat/opencvsharp。其是OpenCV的.NET wrapper,它比Emgucv更接近於原始的OpenCV,並且有很多的樣例參考。

2、OpenCVSharp特點

  • 直接封裝了更多的OpenCV方法,降低了學習的難度,比EmguCV更便於使用
  • 大部分繼承了IDisposable接口,方便使用using語句
  • 可以直接調用原始風格的OpenCV方法
  • 可以將圖像對象直接轉換成GDI使用的Bitmap和WPF的WriteBitmap
  • 支持Mono。

3、OpenCVSharp在VS中的環境配置

第一種:NuGet程序包管理器中搜索並安裝:

OpenCvSharp4
OpenCvSharp4.runtime.win

此種方法未成功,安裝過程報錯。

第二種:下載OpenCvSharp4安裝包
github網址: https://github.com/shimat/opencvsharp
releases網址:https://github.com/shimat/opencvsharp/releases

 

下載好之后解壓到一個文件夾(任意的文件夾)

 

 解壓好之后,在【解決方案】中右鍵【引用】->【添加引用】,選擇【瀏覽】,將下載文件中的OpenCvSharp.dll、OpenCvSharp.Extensions.dll文件添加進引用。

 

將下載文件中的OpenCvSharpExtern.dll復制到可執行文件的Debug/Release文件夾下,所有配置OK,下面測試是否配置成功。

 

using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

//添加相應的引用即可
using OpenCvSharp;

using OpenCvSharp.Extensions;


namespace OpenCVSharpTest
{
class Program
    {
    static void Main(string[] args)
        {
            //讀取圖片
            Mat img = Cv2.ImRead(@"./test.jpg", ImreadModes.Unchanged);
            Cv2.NamedWindow("demo", WindowFlags.Normal);  //創建名字為demo的窗體
            Cv2.ImShow("demo", img);  //在demo窗體上顯示
            Cv2.WaitKey(0);
        }
    }

}

 

 

 

 

項目中遇到的坑:

在C++中,ROI是可以這樣定義的。image是事先定義的Mat:
Mat imageROI = image(Rect(500, 250, logo.cols, logo.rows));

而在C#中,要這樣定義:
Mat dstImg = new Mat(srcImg, new Rect(x, y, width, height));
當時想用C++的Style來定義,搞了半天發現根本就沒實現,后來發現C#是不能對括號進行重載的。
C#這方面的話還是要用熟練,搞機器視覺這行還是很有用的。

OpenCvSharp.NativeMethods”的類型初始值設定項引發異常:

1. 首先

報錯  “OpenCvSharp.Mat”的類型初始值設定項引發異常 缺少opencvsharpExtern.dll
直接添加引用 opencvsharpExtern.dll 可能會報錯    
直接拷入相應項目的 bin/debug或bin/release 里就好了

2 如果1中方法不行, 做完1后 如下 將目標平台改為X64

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM