我正在尝试使用 emguCv 检测图像的角落。为此,我在 emguCv 中使用了 Harris Corner 检测方法。但输出结果是模糊的,使用该方法我无法获得图像中角的数量。当我搜索时,我在 OpenCvSharp 中找到了一个检测角点的代码,它会按照我的意愿给出输出。我试图将 OpenCvSharp 代码转换为 EmguCv,然后我就卡在这里了。将“Cv.GoodFeaturesToTrack()”方法转换为 EmguCv 时。在 EmguCv 结构中,它需要 11 个参数,对于最后 4 个参数,我应该传递什么?有人能帮我吗?
OpencvSharp代码如下:
IplImage src;
IplImage gray;
IplImage eigImg;
public void Grascale()
{
gray = Cv.CreateImage(src.Size, BitDepth.U8, 1);
Cv.CvtColor(src, gray, ColorConversion.RgbToGray);
Cv.SaveImage("grayimg.jpg", src);
}
public void DetectCorners()
{
Grascale();
int cornerCount = 15000000;
using (src)
using (gray)
using (IplImage eigImg = new IplImage(gray.GetSize(), BitDepth.F32, 1))
using (IplImage tempImg = new IplImage(gray.GetSize(), BitDepth.F32, 1))
{
CvPoint2D32f[] corners;
Cv.GoodFeaturesToTrack(gray, eigImg, tempImg, out corners, ref cornerCount, 0.1, 15);
Cv.FindCornerSubPix(gray, corners, cornerCount, new CvSize(3, 3), new CvSize(-1, -1), new CvTermCriteria(20, 0.03));
for (int i = 0; i < cornerCount; i++)
Cv.Circle(src, corners[i], 3, new CvColor(0, 0, 255), 2);
Cv.SaveImage("result_img.jpg", src);
}
}