接下来要准备开始玩摄像头了
    直接上代码:

    1. static void Main(string[] args)
    2. {
    3. VideoCapture video = new VideoCapture(0);
    4. if (!video.IsOpened())
    5. {
    6. Console.WriteLine("摄像头打开失败");
    7. return;
    8. }
    9. Mat photo = new Mat();
    10. while (true)
    11. {
    12. Mat Camera = new Mat();
    13. Mat GaryMart = new Mat();
    14. video.Read(Camera);
    15. if (Camera.Empty())//读取视频文件时,判定帧是否为空,如果帧为空,则下方的图片处理会报异常
    16. {
    17. break;
    18. }
    19. //Cv2.CvtColor(Camera, GaryMart, ColorConversionCodes.RGBA2BGR);
    20. //Cv2.Canny(GaryMart, Camera, 100, 200); //边缘检测
    21. //Cv2.CvtColor(Camera, Camera, ColorConversionCodes.HSV2RGB_FULL);//将图像转为HSV2RGB_FULL
    22. Window Camera1 = new Window("Camera", WindowMode.Normal, Camera);
    23. if (Cv2.WaitKey(30)==27 || Cv2.WaitKey(30) == 32)//类似于拍照功能,按下Esc或空格键推出While并且将最后一帧照片显示
    24. {
    25. Camera.CopyTo(photo);
    26. break;
    27. }
    28. }
    29. Window photo1 = new Window("Photo", WindowMode.Normal, photo);
    30. Cv2.WaitKey(0);
    31. }

    image.pngimage.pngimage.pngimage.png

    VideoCapture video = new VideoCapture(0);
    摄像机的index是如上图所示,依次为0.1.2…可以禁用排在前面的摄像头,来使得所需的摄像头index为0

    视频录制
    视频录制的大体跟拍照什么的都类似,只有下方加粗的部分有区别
    特别注意的是 VideoWriter.FourCC,编码格式,请用”转到定义”看怎么定义这个转码格式

    1. static void Main(string[] args)
    2. {
    3. VideoCapture video = new VideoCapture(0);
    4. // FourCC fourCC = VideoWriter.FourCC(@"XVID");
    5. **VideoWriter videoWriter = new VideoWriter(@"out.avi", VideoWriter.FourCC(@"XVID"), 20, new Size(640,480),true);**
    6. if (!video.IsOpened())
    7. {
    8. Console.WriteLine("摄像头打开失败");
    9. return;
    10. }
    11. Mat photo = new Mat();
    12. while (true)
    13. {
    14. Mat Camera = new Mat();
    15. Mat GaryMart = new Mat();
    16. video.Read(Camera);
    17. if (Camera.Empty())//读取视频文件时,判定帧是否为空,如果帧为空,则下方的图片处理会报异常
    18. {
    19. break;
    20. }
    21. //Cv2.CvtColor(Camera, GaryMart, ColorConversionCodes.RGBA2BGR);
    22. //Cv2.Canny(GaryMart, Camera, 100, 200); //边缘检测
    23. //Cv2.CvtColor(Camera, Camera, ColorConversionCodes.HSV2RGB_FULL);//将图像转为HSV2RGB_FULL
    24. **videoWriter.Write(Camera);**
    25. Window Camera1 = new Window("Camera", WindowMode.Normal, Camera);
    26. if (Cv2.WaitKey(30)==27 || Cv2.WaitKey(30) == 32)//类似于拍照功能,按下Esc或空格键推出While并且将最后一帧照片显示
    27. {
    28. Camera.CopyTo(photo);
    29. break;
    30. }
    31. }
    32. Window photo1 = new Window("Photo", WindowMode.Normal, photo);
    33. Cv2.WaitKey(0);
    34. }