接下来要准备开始玩摄像头了
直接上代码:
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_FULL
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);
}
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);
}
视频就不上啦,老夫长得丑,有点辣眼睛