Помогите пожалуйста, программа делает скриншоты, но разрешение камеры 19201080, а выходное разрешение на файле 640480. Мне нужно чтобы на выходе было изображение с максимальным разрешением.
не смог найти адекватного решения в интернете
using DirectShowLib;
using Emgu.CV;
using Emgu.CV.Structure;
using Emgu.CV.Util;
using Emgu.Util;
using System;
using System.Drawing;
using System.Drawing.Imaging;
using System.Windows.Forms;
using Word = Microsoft.Office.Interop.Word;
using System.IO;
namespace Vision
{
public partial class Form2 : Form
{
private VideoCapture capture = null;
private DsDevice[] webCams = null;
private int selectedCameraId;
private readonly string TemplateFileName = @"D:\BASE\Shablon osmotra.docx";
public Form2()
{
InitializeComponent();
}
private void Form2_FormClosed(object sender, FormClosedEventArgs e)
{
Application.Exit();
}
//загрузка формы
private void Form2_Load(object sender, EventArgs e)
{
webCams = DsDevice.GetDevicesOfCat(FilterCategory.VideoInputDevice);
for (int i = 0; i < webCams.Length; i++)
{
toolStripComboBox1.Items.Add(webCams[i].Name);
}
}
private void toolStripComboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
selectedCameraId = toolStripComboBox1.SelectedIndex;
}
private void Capture_ImageGrabbed(object sender, EventArgs e)
{
try
{
Mat m = new Mat();
capture.Retrieve(m);
pictureBox1.Image = m.ToImage<Bgr, byte>().Flip(Emgu.CV.CvEnum.FlipType.None).Bitmap;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Ошибка!", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
private void выходToolStripMenuItem_Click(object sender, EventArgs e)
{
Application.Exit();
}
private void btn_start_Click(object sender, EventArgs e)
{
try
{
if (webCams.Length == 0)
{
throw new Exception("Нет доступных камер!");
}
else if (toolStripComboBox1.SelectedItem == null)
{
throw new Exception("Необходимо выбрать камеру!");
}
else if (capture != null)
{
capture.Start();
}
else
{
capture = new VideoCapture(selectedCameraId);
capture.ImageGrabbed += Capture_ImageGrabbed;
capture.Start();
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Ошибка!", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
private void btn_scrennshot_Click(object sender, EventArgs e)
{
try
{
if (!Directory.Exists(@"D:\BASE\Images"))
{
Directory.CreateDirectory(@"D:\BASE\Images");
MessageBox.Show("Папка для снимков создана");
}
else
{
string path = @"D:\BASE\Images";
pictureBox1.Image.Save(path + @"\" + textBox_surename.Text + DateTime.Now.Hour + DateTime.Now.Minute + DateTime.Now.Second + ".jpeg", ImageFormat.Jpeg);
}
var panel = new TableLayoutPanel();
panel.AutoSize = true;
Mat m = new Mat();
capture.Retrieve(m);
//параметры скриншота
var pb = new PictureBox();
pb.Image = new Bitmap (m.ToImage<Bgr, byte>().Flip(Emgu.CV.CvEnum.FlipType.None).Bitmap);
pb.SizeMode = PictureBoxSizeMode.Zoom;
pb.Name = $"SMV_{textBox_surename.Text + DateTime.Now.Hour + DateTime.Now.Minute + DateTime.Now.Second}";
pb.Height = pb.Image.Height / 3;
pb.Width = pb.Image.Width / 3;
//имя
var name = new Label();
name.Text = $"SMV_{textBox_surename.Text + DateTime.Now.Hour + DateTime.Now.Minute + DateTime.Now.Second}";
}
}
}
}