首页 > 其他 > 详细

Kinect+c#视频录像

时间:2014-02-28 15:08:32      阅读:799      评论:0      收藏:0      [点我收藏+]

使用的是vs2012+c#

首先要有Emgu配置,这个网上还是很多教程的,先是看了VS2010+C#+EmguCV读取和录制视频里面启发很大,关键代码是

 

bubuko.com,布布扣
private void Play_Click(object sender, EventArgs e)
        {
            if (Play.Text == "播放")
            {//开启播放模式
                OpenFileDialog openFileDialog = new OpenFileDialog();
                openFileDialog.Filter = "AVI文件|*.avi|RMVB文件|*.rmvb|WMV文件|*.wmv|MKV文件|*.mkv|所有文件|*.*";
                if (openFileDialog.ShowDialog() == DialogResult.OK)
                {
                    Application.Idle += new EventHandler(ProcessFrame);
                    capture = new Capture(openFileDialog.FileName);
                    VideoFps = (int)CvInvoke.cvGetCaptureProperty(capture,
                    Emgu.CV.CvEnum.CAP_PROP.CV_CAP_PROP_FPS);
                    Play.Text = "停止";
                    VideoBox.Image = null;
                    Record.Enabled = false;
                }
            }
            else
            {
                capture.Dispose();
                Application.Idle -= new EventHandler(ProcessFrame);
                Play.Text = "播放";
                Record.Enabled = true;
            }
        }
bubuko.com,布布扣

 

下面写出的是根据csdn上一个前辈分享的案例,但是一直报错,如果你环境安装正确了,那么路子就正了,下面也是关键代码

bubuko.com,布布扣
        /// <summary>
        /// 每一帧彩色图像变化时调用该函数,更新彩色image控件的图像
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        void kinectSensor_ColorFrameReady(object sender, ColorImageFrameReadyEventArgs e)
        {
            using (ColorImageFrame frame = e.OpenColorImageFrame())
            {
                if (frame != null)
                {
                    colorImagePixelData = new byte[frame.PixelDataLength];
                    frame.CopyPixelDataTo(colorImagePixelData);
                    this.colorImageBitmap.WritePixels(this.colorImageBitmapRect,
                        colorImagePixelData, this.colorImageStride, 0);
                    Record(frame);
                }
            }
        }

        void Record(ColorImageFrame image)
        {
            if (_isRecording == 0)
            {
                _fileName = string.Format("{0}{1}{2}", _baseDirectory, DateTime.Now.ToString("MMddyyyyHmmss"), ".AVI");
                _isRecording = 1;
                vw = new VideoWriter(_baseDirectory + "1.avi", CvInvoke.CV_FOURCC(X, V, I, D), 30, 640, 480, true);
                CvInvoke.CV_FOURCC(P, I, M, 1); //= MPEG-1 codec 
                CvInvoke.CV_FOURCC(M, J, P, G); //= motion-jpeg codec (does not work well) 
                CvInvoke.CV_FOURCC(M, P, 4, 2);//= MPEG-4.2 codec 
                CvInvoke.CV_FOURCC(D, I, V, 3);  //= MPEG-4.3 codec 
                CvInvoke.CV_FOURCC(D, I, V, X); //= MPEG-4 codec 
                CvInvoke.CV_FOURCC(U, 2, 6, 3); //= H263 codec 
                CvInvoke.CV_FOURCC(I, 2, 6, 3); //= H263I codec 
                CvInvoke.CV_FOURCC(F, L, V, 1); //= FLV1 codec 
            }
            //_videoArray.Add(image.ToOpenCVImage<Rgb, Byte>());

            if (_isRecording == 1) vw.WriteFrame<Bgr, Byte>(image.ToOpenCVImage<Bgr, Byte>());
            if (_isRecording == 2)
            {
                if (vw != null) vw.Dispose();

            }
        }
bubuko.com,布布扣

Kinect+c#视频录像,布布扣,bubuko.com

Kinect+c#视频录像

原文:http://www.cnblogs.com/bkycjj/p/3572371.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!