请选择 进入手机版 | 继续访问电脑版

查看: 125|回复: 0

[求助] 用OpenCVSharp打开摄像头,并保存摄像头拍摄的视频

[复制链接]

2

主题

2

帖子

55

贡献

初级UU族—2级

Rank: 2

积分
55
发表于 2017-5-18 10:14:40 | 显示全部楼层 |阅读模式
求大神帮忙看看,给点解决思路,我使用OpencvSharp的VideoCapture打开外接摄像头,然后用VideoWrite将视频保存,
QQ图片20170518175621.png 视频写入的代码如下



[C#] 纯文本查看 复制代码
    IEnumerator startWriteVideo()
    {
        //Debug.Log("start write");

        while (isPlay)
        {
            yield return new WaitForEndOfFrame();
            CameraFrame = new Mat(new Size(videoCapture.FrameWidth,videoCapture.FrameHeight), MatType.CV_8UC3);
            //videoCapture.Retrieve(CameraFrame, 0);
            videoCapture.Read(CameraFrame);
            Cv2.CvtColor(CameraFrame, CameraFrame, ColorConversionCodes.BGR2RGB);
            Cv2.Flip(CameraFrame, CameraFrame, FlipMode.X);
            videoWriter.Write(CameraFrame);
        }

        //Debug.Log("end write");
        yield return null;
    }


运行后有视频文件,但视频不能播放
QQ图片20170518180152.png


我在网上看到一篇教程是用OpenCVSharp录制屏幕视频,其写入的代码如下:
[AppleScript] 纯文本查看 复制代码
IEnumerator startWriteVideo()
    {
        Debug.Log("start write");

        while (isWriting)
        {
            yield return new WaitForEndOfFrame();

            img.ReadPixels(new UnityEngine.Rect(0, 0, w, h), 0, 0, true);//read pixels from screen to texture
            img.Apply();

            Mat tmp = new Mat(h, w, MatType.CV_8UC3, img.GetRawTextureData());
            Cv2.CvtColor(tmp, tmp, ColorConversionCodes.BGR2RGB);
            Cv2.Flip(tmp, tmp, FlipMode.X);

            writer.Write(tmp);
        }

        Debug.Log("end write");
        yield return null;
    }


我运行了他的代码,却能录制屏幕。是不是用Cv2.CvtColor()时的编码转换有问题,不知道从摄像头读取的流编码是什么。
求大神帮忙,或者提点下其他方法能实现打开USB摄像头,并保存拍摄视频的方法


QQ图片20170518175647.png
QQ图片20170518175713.png
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表