none
EMGU(OpenCV)剛接觸的新手關於SURF及SIFT函式的問題 RRS feed

  • 問題

  • 各位先進們大家好
    因為我需要做一個關於圖片比對的程式
    所以打算使用SIFT及SURF來做
    但我發現目前網路上討論皆是以EMGU2.4版本去做
    但是因為我的電腦是Win8.1在多次確認環境後確定只能使用3.0的版本
    所以第一個問題是舊的版本EMGU無法運行在新的作業系統上嗎?

    我使用以下程式碼練習

     VectorOfKeyPoint modelKeyPoints = new VectorOfKeyPoint();           
    using (UMat uModelImage = modelImage.ToUMat())
    {
             SIFT sift = new SIFT();
             UMat modelDescriptors = new UMat();
             sift.DetectAndCompute(uModelImage, null, modelKeyPoints, modelDescriptors, false);
             modelImage = modelDescriptors.ToImage<Gray, Byte>();
              pictureBox2.Image = modelImage.ToBitmap();
    }

    modelImage是我想要去做特徵擷取的圖片
    想請問大家的是我以下對函式內各個變數所下的註解是否有誤

    sift.DetectAndCompute(
    uModelImage, //輸入圖片(陣列格式Mat)
    null, //使用遮罩擷取特徵
    modelKeyPoints, //輸入圖像所得到的特徵點
    modelDescriptors, //輸入圖片取特徵點後結果
    false //是否使用另外提供的特徵點偵測
    );

    另外我執行完以後會出現一個錯誤是以下為何會出現overflow

    modelImage = modelDescriptors.ToImage<Gray, Byte>();

    /*
    類型 'System.StackOverflowException' 的未處理例外狀況發生於 Emgu.CV.dll
    */

    另外問題是關於UMAT轉成IMAGE的方式是?


    由於EMGU我是自學的
    但因為版本不同有看到很多不同的程式碼
    所以產生了許多疑問
    希望各位先進能不吝於解答
    謝謝!

    P.S.作業環境為Win8.1 64位元,但C#內編譯環境使用X86,VS為2013版本,EMGU3.0.0.2157


    • 已編輯 jared3102 2015年9月7日 上午 09:50 附上所使用的環境
    2015年9月7日 上午 09:25

所有回覆