c# - 使用 OpenCvSharp 绘制矩形
问题描述
我正在尝试在其上实时绘制视频中检测到的面孔,但我似乎无法让它工作
var haarcascade = new CascadeClassifier("C:/Users/NotMyName/Desktop/haar/haarcascade_frontalface_alt2.xml");
using (Window window = new Window("capture"))
using (Mat image = new Mat())//Image Buffer
{
while (true)
{
Video.Read(image);
var gray = image.CvtColor(ColorConversionCodes.RGB2GRAY);
OpenCvSharp.Rect[] faces = haarcascade.DetectMultiScale(gray, 1.08, 2, HaarDetectionTypes.ScaleImage, new OpenCvSharp.Size(30,30));
foreach (Rect i in faces)
{
Cv2.Rectangle(image, (faces[i].BottomRight.X, faces[i].BottomRight.Y), (faces[i].TopLeft.X, faces[i].TopLeft.Y), 255, 1);
}
但是,编译器只是吐出错误。将 faces 数组直接传递给函数也不起作用。错误消息是(翻译自德语)。
错误 CS0029 类型“OpenCvSharp.Rect”无法转换为“int”
解决方案
我认为正确的方法应该是:
...
foreach (Rect i in faces)
{
Cv2.Rectangle(image, new Point(i.BottomRight.X, i.BottomRight.Y), new Point(i.TopLeft.X, i.TopLeft.Y), 255, 1);
}
....
i
foreach 内的局部变量对 current 的引用Rect
。
Cv2.Rectangle
方法接受OpenCvSharp.Point
.
推荐阅读
- c# - 在 EF 中使用表达式返回方法
- python - pygame.transform.scale does not work on the "game" surface
- typescript - 函数返回对象类型
- c - 为什么 Berkeley 套接字需要字节交换?
- python - 如何找到解决这个大值递归问题的数学方法?
- php - 如何在 codeigniter 电子邮件中正确使用已读回执标题
- list - 如何将返回 [] 的函数转换为 Traversable?
- android - 是否可以从 BroadcastReceiver 获取添加到日历的新事件的 ID?
- c# - 如何按枚举值对数组进行排序
- c++ - 在文件c++中保存和打开向量?