2016-01-21 261 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"); 
}