2016-01-21 71 views
2

我集成了我的項目在Visual Studio 2010與Emgu 3.0和我正在處理檢測對象項目,但是當我使用MCvFont像下面的行我得到錯誤,因爲庫缺少,這個庫從Emgu的最後一個版本中刪除或者什麼?MCvFont庫在Emgu 3.0缺失

MCvFont f2 = new MCvFont(Emgu.CV.CvEnum.FONT.CV_FONT_HERSHEY_TRIPLEX, 1.0, 1.0); 
+0

直取代碼示例您已經添加在Visual Studio項目的引用,該庫?你的代碼的頂部是否有「使用......」聲明,包括相關的庫? – AgapwIesu

+0

我添加了在我的計算機上安裝的Emgu文件夾中找到的所有引用,然後是我調用了所有必需的庫,但是此庫已丟失當我通過代碼調用它時找不到它 –

+0

注意:我正在使用Windows虛擬機機器在Mac上。 –

回答

5

Emgu.CV.CvEnum.FONT.CV_FONT_HERSHEY_TRIPLEX可以在Emgu 3.0 Emgu.CV.CvEnum.FontFace.HersheyTriplex

MCvFont目前在Emgu.CV.Structure在Emgu_2.4.10, 但它在Emgu_3.0.0缺少。我在emgu版本歷史中檢查了這一點。

您可以通過附加治癒這個代碼從Emgu_2.4.10參考Emgu.CV, 抓住這個DLL https://dropmefiles.com/AZvmM

指令轉換2.4.x的代碼到3.0,可以發現http://www.emgu.com/wiki/index.php/Tutorial#Upgrading_from_Emgu_CV_2.x_to_3.x

你做面部或眼睛識別? 這是我的第一個答案在計算器:)

+0

真的,我在最後使用了Emgu 2.4來解決這個錯誤,並且在3.0版本中出現了另一個錯誤。 關於你的問題不,我不做臉或眼睛rec。只有我正在處理圖像中的檢測對象。 謝謝你在堆棧溢出世界的第一個答案:) –

1

我不想增加額外的dll有與Emgu的2.X版本向後保持兼容代碼在Emgu的3.x版本中編寫。正如@КонстантинМарков在他的回答中指出的那樣,MCvFont不再是Emgu 3.x版本庫的一部分。

我假設你的最終目標是在圖像中寫入一些文本。所以,我不介意更改代碼,您需要重寫它以便使用方法CvInvoke.PutText來實現該目標。

根據用於上述方法的官方文檔page,CvInvoke.PutText

呈現與指定的字體和顏色的圖像中的文本。打印的文本被ROI矩形裁剪。指定字體不屬於 的符號將替換爲矩形符號。

這是在C#

public static void PutText(
    IInputOutputArray img, 
    string text, 
    Point org, 
    FontFace fontFace, 
    double fontScale, 
    MCvScalar color, 
    int thickness = 1, 
    LineType lineType = LineType.EightConnected, 
    bool bottomLeftOrigin = false 
) 

下面方法簽名被用於在該方法中的每個參數的描述

  • IMG
    • 類型:Emgu.CV.IInputOutputArray
    • 描述:輸入圖像
  • 文本
    • 類型:System.String
    • 說明:字符串打印
  • 組織
    • 類型:System.Drawing.Point
    • 說明:在左下角的座標第一個字母
  • fontFace
    • 類型:Emgu.CV.CvEnum.FontFace
    • 描述:字體類型。
  • fontScale
    • 類型:System.Double
    • 說明:在由字體特定基大小乘字體比例因子。
  • 顏色
    • 類型:Emgu.CV.Structure.MCvScalar
    • 描述:文本顏色
  • 厚度(可選)
    • 類型:System.Int32
    • 描述:所使用的線的厚度畫一個文字。
  • 線型(可選)
    • 類型:Emgu.CV.CvEnum.LineType
    • 說明:線路類型
  • bottomLeftOrigin(可選)
    • 類型:System.Boolean
    • 描述:如果爲true ,圖像數據來源n在左下角。否則,它位於左上角。

這是從這個source

using Emgu.CV; 
using Emgu.CV.CvEnum; 
using Emgu.CV.Structure; 
using Emgu.CV.UI; 
using System.Drawing; 

... 

//Create a 3 channel image of 400x200 
using (Mat img = new Mat(200, 400, DepthType.Cv8U, 3)) 
{ 
    img.SetTo(new Bgr(255, 0, 0).MCvScalar); // set it to Blue color 

    //Draw "Hello, world." on the image using the specific font 
    CvInvoke.PutText(
     img, 
     "Hello, world", 
     new System.Drawing.Point(10, 80), 
     FontFace.HersheyComplex, 
     1.0, 
     new Bgr(0, 255, 0).MCvScalar); 

    //Show the image using ImageViewer from Emgu.CV.UI 
    ImageViewer.Show(img, "Test Window"); 
}