画像サイズの変更は CvCppクラスのResizeメソッドで行います。CvCppクラスのResizeメソッドの詳細はここを参照してください。
コーディング |
ボタンを4個準備し それぞれ 元の画像・縦横2倍・縦横1/2・横2倍縦1/2 を表示するようにしました。
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using OpenCvSharp; using OpenCvSharp.CPlusPlus; namespace OpenCvShp { public partial class Form1 : Form { private Mat src = new Mat(); private Mat dst = new Mat(); public Form1() { InitializeComponent(); } private void timer1_Tick(object sender, EventArgs e) { src = new Mat(@”C:VCTestDatayuri.jpg”, LoadMode.Color); dst = src.Clone(); timer1.Enabled = false; pictureBox1.Invalidate(); } private void btnOrigin_Click(object sender, EventArgs e) { dst = src.Clone(); pictureBox1.Invalidate(); } private void btn_2x2_Click(object sender, EventArgs e) { CvCpp.Resize(src, dst, new CvSize(src.Cols * 2, src.Rows * 2), 0, 0, Interpolation.Linear); pictureBox1.Invalidate(); } private void btn_hxh_Click(object sender, EventArgs e) { CvCpp.Resize(src, dst, new CvSize(src.Cols / 2, src.Rows / 2), 0, 0, Interpolation.Linear); pictureBox1.Invalidate(); } private void btn_2xh_Click(object sender, EventArgs e) { CvCpp.Resize(src, dst, new CvSize(src.Cols * 2, src.Rows / 2), 0, 0, Interpolation.Linear); pictureBox1.Invalidate(); } private void pictureBox1_Paint(object sender, PaintEventArgs e) { if (!timer1.Enabled) { //画像データ読み込み済み判断にtimerのEnableを使っている Bitmap bmp = new Bitmap(dst.Cols, dst.Rows); bmp = dst.ToBitmap(); e.Graphics.DrawImage(bmp, 0, 0, bmp.Width, bmp.Height); bmp.Dispose(); this.Text = dst.Cols.ToString() + ” * ” + dst.Rows.ToString(); } } } }
処理結果
元の画像 | 縦横2倍 |
縦横1/2 | 横2倍縦1/2 |
Windows7 Vs2008 OpenCv2.4 And OpenCvSharp |