接下来要准备开始玩摄像头了
直接上代码:
static void Main(string[] args){VideoCapture video = new VideoCapture(0);if (!video.IsOpened()){Console.WriteLine("摄像头打开失败");return;}Mat photo = new Mat();while (true){Mat Camera = new Mat();Mat GaryMart = new Mat();video.Read(Camera);if (Camera.Empty())//读取视频文件时,判定帧是否为空,如果帧为空,则下方的图片处理会报异常{break;}//Cv2.CvtColor(Camera, GaryMart, ColorConversionCodes.RGBA2BGR);//Cv2.Canny(GaryMart, Camera, 100, 200); //边缘检测//Cv2.CvtColor(Camera, Camera, ColorConversionCodes.HSV2RGB_FULL);//将图像转为HSV2RGB_FULLWindow Camera1 = new Window("Camera", WindowMode.Normal, Camera);if (Cv2.WaitKey(30)==27 || Cv2.WaitKey(30) == 32)//类似于拍照功能,按下Esc或空格键推出While并且将最后一帧照片显示{Camera.CopyTo(photo);break;}}Window photo1 = new Window("Photo", WindowMode.Normal, photo);Cv2.WaitKey(0);}




VideoCapture video = new VideoCapture(0);
摄像机的index是如上图所示,依次为0.1.2…可以禁用排在前面的摄像头,来使得所需的摄像头index为0
视频录制
视频录制的大体跟拍照什么的都类似,只有下方加粗的部分有区别
特别注意的是 VideoWriter.FourCC,编码格式,请用”转到定义”看怎么定义这个转码格式
static void Main(string[] args){VideoCapture video = new VideoCapture(0);// FourCC fourCC = VideoWriter.FourCC(@"XVID");**VideoWriter videoWriter = new VideoWriter(@"out.avi", VideoWriter.FourCC(@"XVID"), 20, new Size(640,480),true);**if (!video.IsOpened()){Console.WriteLine("摄像头打开失败");return;}Mat photo = new Mat();while (true){Mat Camera = new Mat();Mat GaryMart = new Mat();video.Read(Camera);if (Camera.Empty())//读取视频文件时,判定帧是否为空,如果帧为空,则下方的图片处理会报异常{break;}//Cv2.CvtColor(Camera, GaryMart, ColorConversionCodes.RGBA2BGR);//Cv2.Canny(GaryMart, Camera, 100, 200); //边缘检测//Cv2.CvtColor(Camera, Camera, ColorConversionCodes.HSV2RGB_FULL);//将图像转为HSV2RGB_FULL**videoWriter.Write(Camera);**Window Camera1 = new Window("Camera", WindowMode.Normal, Camera);if (Cv2.WaitKey(30)==27 || Cv2.WaitKey(30) == 32)//类似于拍照功能,按下Esc或空格键推出While并且将最后一帧照片显示{Camera.CopyTo(photo);break;}}Window photo1 = new Window("Photo", WindowMode.Normal, photo);Cv2.WaitKey(0);}
