我正在开发一个项目,我希望使用AForge.NET-Library跟踪Microsoft Kinect的骰子。 该项目本身仅包含基本原理,如初始化Kinect,获取Colorframe和应用一个颜色过滤器,但已经出现问题。 所以这是该计划的主要部分:
void ColorFrameReady(object sender, ColorImageFrameReadyEventArgs e)
{
using (ColorImageFrame colorFrame = e.OpenColorImageFrame())
{
if (colorFrame != null)
{
colorFrameManager.Update(colorFrame);
BitmapSource thresholdedImage =
diceDetector.GetThresholdedImage(colorFrameManager.Bitmap);
if (thresholdedImage != null)
{
Display.Source = thresholdedImage;
}
}
}
}
'colorFrameManager'对象的'Update'方法如下所示:
public void Update(ColorImageFrame colorFrame)
{
byte[] colorData = new byte[colorFrame.PixelDataLength];
colorFrame.CopyPixelDataTo(colorData);
if (Bitmap == null)
{
Bitmap = new WriteableBitmap(colorFrame.Width, colorFrame.Height,
96, 96, PixelFormats.Bgr32, null);
}
int stride = Bitmap.PixelWidth * Bitmap.Format.BitsPerPixel / 8;
imageRect.X = 0;
imageRect.Y = 0;
imageRect.Width = colorFrame.Width;
imageRect.Height = colorFrame.Height;
Bitmap.WritePixels(imageRect, colorData, stride, 0);
}
'getThresholdedImage'方法看起来像这样:
public BitmapSource GetThresholdedImage(WriteableBitmap colorImage)
{
BitmapSource thresholdedImage = null;
if (colorImage != null)
{
try
{
Bitmap bitmap = BitmapConverter.ToBitmap(colorImage);
HSLFiltering filter = new HSLFiltering();
filter.Hue = new IntRange(335, 0);
filter.Saturation = new Range(0.6f, 1.0f);
filter.Luminance = new Range(0.1f, 1.0f);
filter.ApplyInPlace(bitmap);
thresholdedImage = BitmapConverter.ToBitmapSource(bitmap);
}
catch (Exception ex)
{
System.Console.WriteLine(ex.Message);
}
}
return thresholdedImage;
}
现在程序执行速度减慢/执行此行时没有响应:
filter.ApplyInPlace(bitmap);
所以我已经阅读了这个帖子(C# image processing on Kinect video using AForge)并且我尝试了EMGU,但由于内部异常并因为线程启动器不在线,所以我无法让它工作,因为我的问题有四个月了看看他的工作代码没有回答。 现在我首先想知道执行缓慢的原因是什么
filter.ApplyInPlace(bitmap);
这种图像处理真的如此复杂吗?或者这可能是我的环境问题? 其次,我想问一下跳帧是否是一个很好的解决方案?或者最好每次使用轮询和打开框架 - 例如 - 500毫秒。 非常感谢你!
答案 0 :(得分:1)
HSL过滤器不会减慢计算速度,也不是复杂的过滤器。 我在320x240图像中使用它,30 fps没问题。
问题可能在于计算图像的分辨率或帧速率过高!
如果图像的分辨率很高,我建议在任何过滤器应用程序之前调整它的大小。 我认为20帧(也可能更低)的帧率足以跟踪骰子。