画像サイズを変更する

画像サイズの変更は 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
スポンサーリンク
Rectangle大広告
Rectangle大広告

シェアする

  • このエントリーをはてなブックマークに追加

フォローする