C#winform连接相机,设置分辨率 设置照片质量 预览照片 保存照片
代码片
.
private void Form1_Load(object sender, EventArgs e)
{
labPhotoPath.Text = Application.StartupPath + @"\Photos";//相片保存路径
videoDevices = new FilterInfoCollection(FilterCategory.VideoInputDevice);//寻找设备上所有的相机
if (videoDevices.Count != 0)
{
foreach (FilterInfo device in videoDevices)
{
cmbCamera.Items.Add(device.Name);
}
}
else
{
cmbCamera.Items.Add("没有找到摄像头");
}
cmbCamera.SelectedIndex = 0;
//为照片保存的质量做准备 100为最佳质量
int quality = 100;
ImageCodecInfo[] codecs = ImageCodecInfo.GetImageEncoders();
foreach (ImageCodecInfo codec in codecs)
{
if (codec.FormatID == ImageFormat.Jpeg.Guid)
{
jpgEncoder = codec;
break;
}
}
Encoder encoder = Encoder.Quality;
encoderParas = new EncoderParameters(1);
EncoderParameter enPara = new EncoderParameter(encoder, quality);
encoderParas.Param[0] = enPara;
}
private void cmbCamera_SelectedIndexChanged(object sender, EventArgs e)//选中相机设置分辨率 联动
{
if (videoDevices.Count != 0)
{
videoDevice = new VideoCaptureDevice(videoDevices[cmbCamera.SelectedIndex].MonikerString);
GetDeviceResolution(videoDevice);
}
}
private void btnConnect_Click(object sender, EventArgs e)//连接相机
{
if (videoDevice != null)
{
if ((videoCapabilities != null) && (videoCapabilities.Length != 0))
{
videoDevice.VideoResolution = videoCapabilities[cmbResolution.SelectedIndex];
vispShoot.VideoSource = videoDevice;
vispShoot.Start();
EnableControlStatus(false);
}
}
else
{
MessageBox.Show("没有相机可连接");
}
}
.......
.......
.......
.......
.......
链接: 源代码包.