Günümüzde dijital kameraların kaliteleri arttıkça daha yüksek çözünürlükte fotoğraflar elde edilmektedir. Tabi bu fotoğrafların çözünürlükleri arttıkça buna bağlı olarak boyutları da artmaktadır. Bu da görüntüler üzerinde herhangi bir işlem yapımını zorlaştırıyor. Buradaki zorlaştırmadan kasıt çok daha uzun zaman alıyor.
EmguCV' nin resize komutu burada devreye giriyor ve yüksek çözünürlüklü resmi yeniden boyutlandırarak işlem yapılacak boyuta getiriyor. Yeniden boyutlandırma işlemini "Linear, Cubic, Nearest, Area" gibi algoritmalar kullanarak yapabiliyor. Parametre olarak giriş image yada mat nesnesi, çıkış mat yada image nesnesi, size(boyut) ve hangi algoritma kullanarak sıkıştıracağını istemektedir.
Bu yazımızda da bir görüntünün 512*512 boyutlarına nasıl dönüştürüldüğünü göstereceğiz.
EmguCV' nin resize komutu burada devreye giriyor ve yüksek çözünürlüklü resmi yeniden boyutlandırarak işlem yapılacak boyuta getiriyor. Yeniden boyutlandırma işlemini "Linear, Cubic, Nearest, Area" gibi algoritmalar kullanarak yapabiliyor. Parametre olarak giriş image yada mat nesnesi, çıkış mat yada image nesnesi, size(boyut) ve hangi algoritma kullanarak sıkıştıracağını istemektedir.
Bu yazımızda da bir görüntünün 512*512 boyutlarına nasıl dönüştürüldüğünü göstereceğiz.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public partial class MainForm : Form | |
{ | |
private Image<Gray, Byte> m_originalImage; | |
private static void fillSizeInfo(Label label, Mat m) | |
{ | |
label.Text = m.Height + "x" + m.Width; | |
} | |
public MainForm() | |
{ | |
InitializeComponent(); | |
} | |
private void MainForm_Load(object sender, EventArgs e) | |
{ | |
try | |
{ | |
Array array = Enum.GetValues(typeof(Inter)); | |
array.Cast<inter>().ToList().ForEach(i => m_comboBoxResizeMode.Items.Add(i)); | |
m_comboBoxResizeMode.SelectedIndex = 0; | |
} | |
catch (Exception ex) | |
{ | |
MessageBox.Show(ex.Message); | |
} | |
} | |
private void m_buttonOK_Click(object sender, EventArgs e) | |
{ | |
try | |
{ | |
OpenFileDialog dlg = new OpenFileDialog(); | |
if (dlg.ShowDialog() != DialogResult.OK) | |
return; | |
m_originalImage = new Image<Gray, Byte>(dlg.FileName); | |
m_pictureBoxOriginalImage.Image = m_originalImage.ToBitmap(); | |
fillSizeInfo(m_labelOriginalSize, m_originalImage.Mat); | |
} | |
catch (Exception ex) { | |
MessageBox.Show(ex.GetType().Name + " " + ex.Message); | |
} | |
} | |
private void m_buttonResize_Click(object sender, EventArgs e) | |
{ | |
try | |
{ | |
//var img = m_originalImage.Resize(width, height, (Inter)m_comboBoxResizeMode.SelectedItem); (İkinci Yöntem) | |
int width = Convert.ToInt32(m_textBoxResizeWidth.Text); | |
int height = Convert.ToInt32(m_textBoxResizeHeight.Text); | |
Image<Gray, Byte> img = new Image<Gray, Byte>(width, height); | |
CvInvoke.Resize(m_originalImage, img, new Size(width, height), 0, 0, (Inter)m_comboBoxResizeMode.SelectedItem); | |
m_pictureBoxResult.Image = img.ToBitmap(); | |
m_labelResultSize.Text = img.Width + "x" + img.Height; | |
} | |
catch (Exception ex) | |
{ | |
MessageBox.Show(ex.Message); | |
} | |
} | |
} |