刚刚入手c# ,并利用EmguCv 处理图像, 一时不知从何入手。首先看灰度化,代码如下:
namespace EmgCv_Demo
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
OpenFileDialog Openfile = new OpenFileDialog();
if (Openfile.ShowDialog() == DialogResult.OK)
{
Image
pictureBox1.Image = My_Image.ToBitmap(); // pictureBox1 只能够显示位图,因此必须进行转换
Image
//Gray Image
for (int i = 0; i < 100; i++)
for (int j = 0; j < 100;j++ )
gray_image[i, j] = new Gray(255); //给灰度图像赋值 i is the row j is the col
//Gray Image
// Gray my_Gray = gray_image[10, 20];
//Gray to int
// int my_intensity = (int)my_Gray.Intensity;
//读取指定位置的灰度值
// int my_intensity = gray_image.Data[10, 20,0]; //读取指定位置的像素值
int my_intensity = (int)gray_image[10, 20].Intensity;
int kkk=0;
pictureBox2.Image = gray_image.ToBitmap(); // 显示灰度化后的图像
}
}
}
虽然实现了功能,还是有个问题不理解,为什么灰度化后的图像用matlab读出来还是三个通道?512*512*3 ,然而在这里用这个语句 gray_image[i, j] = new Gray(255); 也可以给灰度图像赋值?用 什么语句可以解决为只有512*512的图像?
参考文献
http://www.emgu.com/wiki/index.php/Setting_up_EMGU_C_Sharp
加上二值化代码
for (int i = 0; i < 512; i++)
for (int j = 0; j < 512;j++ )
if ((int)gray_image[i, j].Intensity>=123)
gray_image[i, j] = new Gray(255); //给灰度图像赋值
else
gray_image[i, j] = new Gray(0); //给灰度图像赋值