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.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