Opencv 计算机视觉应用中的blobtracketo跟踪人
我目前正在尝试开发一个系统,使用EmguCV(OpenCV包装器)跟踪队列中的人。我首先运行并理解了我下载的Emgu包中的视频监控示例。以下是我基于示例的代码:Opencv 计算机视觉应用中的blobtracketo跟踪人,opencv,computer-vision,emgucv,Opencv,Computer Vision,Emgucv,我目前正在尝试开发一个系统,使用EmguCV(OpenCV包装器)跟踪队列中的人。我首先运行并理解了我下载的Emgu包中的视频监控示例。以下是我基于示例的代码: private static void processVideo(string fileName) { Capture capture = new Capture(fileName); MCvFont font = new MCvFont(Emgu.CV.CvEnum.FONT.CV_FO
private static void processVideo(string fileName)
{
Capture capture = new Capture(fileName);
MCvFont font = new MCvFont(Emgu.CV.CvEnum.FONT.CV_FONT_HERSHEY_SIMPLEX,
1.0, 1.0);
BlobTrackerAuto<Bgr> tracker = new BlobTrackerAuto<Bgr>();
//I'm using a class that I implemented for foreground segmentation
MyForegroundExtractor fgExtractor = new MyForegroundExtractor();
Image<Bgr, Byte> frame = vVideo.QueryFrame();
fgExtractor.initialize(frame);
while (frame != null)
{
Image<Gray, Byte> foreground = fgExtractor.getForegroundImg(frame);
tracker.Process(frame, foreground);
foreach (MCvBlob blob in tracker)
{
if (isPersonSize(blob))
{
frame.Draw((Rectangle)blob, new Bgr(0, 0, 255), 3);
frame.Draw(blob.ID.ToString(), ref font,
Point.Round(blob.Center), new Bgr(255.0, 255.0, 255.0));
}
}
CvInvoke.cvShowImage("window", frame);
CvInvoke.cvWaitKey(1);
frame = capture.QueryFrame();
}
}
我添加了if语句,因为程序执行非常慢。但当我做到这一点时,我能够跟踪那些我以前无法跟踪的人
总而言之,如果更习惯OpenCV/EmguCV的人帮助我说这是否是跟踪使用BlobTracketo的人的好方法,并帮助我解决上述问题,我将不胜感激。我觉得我没有利用EmguCV提供给我的工具
if (i % 3 == 0)
tracker.Process(frame, foreground);