画像サイズの変更は 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 |



