目前,出于后期处理的原因,我不仅试图保存骨骼数据,还试图保存彩色图像。当前,这是处理彩色视频并在UI中输出彩色图像的代码部分。我认为,这是必须保存色框图像的地方。
private void ColorFrameEvent(ColorImageFrameReadyEventArgs colorImageFrame)
{
//Get raw image
using (ColorImageFrame colorVideoFrame = colorImageFrame.OpenColorImageFrame())
{
if (colorVideoFrame != null)
{
//Create array for pixel data and copy it from the image frame
Byte[] pixelData = new Byte[colorVideoFrame.PixelDataLength];
colorVideoFrame.CopyPixelDataTo(pixelData);
//Set alpha to 255
for (int i = 3; i < pixelData.Length; i += 4)
{
pixelData[i] = (byte)255;
}
using (colorImage.GetBitmapContext())
{
colorImage.FromByteArray(pixelData);
}
}
}
}
我尝试阅读有关OpenCV,EmguCV和多线程的内容;但是我很困惑。最好在一个位置提供可靠的良好解释。但是,我觉得这样做的最好方法是不丢失每秒帧数,也许是将所有图像保存在数组列表中,然后在程序完成后进行一些后期处理以转换数组->图像->视频在Matlab中。
有人可以评论我如何将彩色图像流保存到文件中吗?
最佳答案
如果一切顺利,则每秒30秒(30fps)触发ColorImageFrameReady事件。我认为一次保存每张图片非常繁重。
我建议您使用Backgroundworker,您可以检查工作人员是否忙碌,如果不只是将字节传递给后台工作人员,则可以进行魔术处理。
您可以轻松地通过byte []保存或制作图像。只是谷歌这个。
http://www.codeproject.com/Articles/15460/C-Image-to-Byte-Array-and-Byte-Array-to-Image-Conv
How to compare two images using byte arrays
关于c# - 使用Kinect C#VS 2013保存彩色框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24642818/