c# - 使用Kinect C#VS 2013保存彩色框

标签 c# visual-studio opencv visual-studio-2013 kinect

目前,出于后期处理的原因,我不仅试图保存骨骼数据,还试图保存彩色图像。当前,这是处理彩色视频并在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/

相关文章:

C# 如何从字符串响应中删除转义引号

c++ - 如何在 Visual Studio C++ Win32 项目中填充组合框

c# - C#如何在长时间运行的查询期间防止由于崩溃而导致数据丢失?

c# - 如何使用 .NETCoreApp1.1 实现定时器

c++ - 错误 C2275 RHandle : illegal use of this type as an expression

c# - 当前的 .NET SDK 不支持面向 .NET Core 2.2。 (SDK 2.2.202)

opencv - opencv中有求解xA=b的函数吗?

c++ - OpenCV:将 std::vector 传递给需要 OutputArray 的函数时,vec 包含垃圾

c++ - 将 STL 字符串从 C++/CLI 应用程序传递到 C++ DLL

c# - 如何防止阿拉伯字符被AntiXssEncoder重新编码?