Emgu 3.0 中缺少 MCvFont 库

本文关键字:MCvFont Emgu | 更新日期: 2023-09-27 18:31:19

我在Visual Studio 2010上将我的项目与Emgu 3.0集成在一起,我正在研究检测对象项目,但是当我使用MCvFont时,如下所示我得到错误,因为缺少库,该库从最新版本的Emgu中删除还是什么?

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

Emgu 3.0 中缺少 MCvFont 库

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

您是否进行面部或眼睛识别?这是我在stackoverflow :)的第一个答案

我不想添加一个额外的 dll 来向后兼容 2.x 版本的 Emgu,用于用 3.x 版本的 Emgu 编写的代码。正如@Константин Марков在他的回答中指出的那样,MCvFont 不再是 Emgu 3.x 版本中库的一部分。

我假设您的最终目标是在图像中编写一些文本。所以,我不介意改变你的代码,你需要重写它才能使用CvInvoke.PutText方法来实现这一目标。

根据上述方法的官方文档页面,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
)

以下是方法中每个参数的说明

  • 图像
    • 类型: Emgu.CV.IInputOutputArray
    • 说明:输入图像
  • 发短信
    • 类型: System.String
    • 说明:要打印的字符串
  • 组织
    • 类型: System.Drawing.Point
    • 描述:第一个字母左下角的坐标
  • 字体人脸
    • 类型: Emgu.CV.CvEnum.FontFace
    • 说明:字体类型。
  • 字体缩放
    • 类型: System.Double
    • 说明:字体比例因子乘以特定于字体的基大小。
  • 颜色
    • 类型: Emgu.CV.Structure.MCvScalar
    • 说明:文本颜色
  • 厚度(可选)
    • 类型: System.Int32
    • 说明:用于绘制文本的线条的粗细。
  • 线类型(可选)
    • 类型: Emgu.CV.CvEnum.LineType
    • 描述:线型
  • 底部左原点(可选)
    • 类型: System.Boolean
    • 说明:如果为 true,则图像数据源位于左下角。否则,它位于左上角。

这是直接取自此源代码的代码示例

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");
}

CvInvoke.PutText(img,
"Hello, world", 
new System.Drawing.Point(10, 80), 
FontFace.HersheyComplex, 1.0, 
new Bgr(0, 255, 0).MCvScalar);

参考: http://www.emgu.com/wiki/index.php/Hello_World_in_CSharp#Emgu_CV_3.0_2