using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
//EMGU
using Emgu.CV;
using Emgu.CV.Structure;
using Emgu.Util;
using System.Threading;
using System.Diagnostics;
using System.Runtime.InteropServices;
using Emgu.CV.Util;
namespace remap
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
Image<Bgr, byte> srcImage = new Image<Bgr, byte>("lakeWater.jpg");
if (srcImage ==null)
{
MessageBox.Show("图片不存在!");
}
输出矩阵定义
//Image<Bgr, byte> resultImage = new Image<Bgr, byte>(srcImage.Width, srcImage.Height);
X与Y方向矩阵
//Image<Bgr, byte> xMapImage = new Image<Bgr, byte>(srcImage.Width, srcImage.Height);
//Image<Bgr, byte> yMapImage = new Image<Bgr, byte>(srcImage.Width, srcImage.Height);
取图像的宽高
byte[, ,] data = srcImage.Data;
byte[, ,] data1 = srcImage.CopyBlank().Data;
//图像遍历
for (int i = 0; i < srcImage.Width; i++)
{
for (int j = 0; j < srcImage.Height; j++)
{
//x与y均翻转
for (int k = 0; k < srcImage.NumberOfChannels ; k++)
{
data1[j, i, k] = data[srcImage.Height-j-1, srcImage.Width - i - 1, k];
}
}
}
//CvInvoke.cvRemap(srcImage, resultImage, xMapImage, yMapImage, Emgu.CV.CvEnum.INTER.CV_INTER_LINEAR, Emgu.CV.CvEnum.BORDER_TYPE.CONSTANT);
Image<Bgr, byte> dst = new Image<Bgr, byte>(data1);
imageBox1.Image = srcImage;
imageBox2.Image = dst;
}
}
}