
谁懂C#的二值化的请进来 50
能给我解释这段代码里每句的含义吗http://wenku.baidu.com/view/9bbb21ef551810a6f52486be.html...
能给我解释这段代码里每句的含义吗
http://wenku.baidu.com/view/9bbb21ef551810a6f52486be.html 展开
http://wenku.baidu.com/view/9bbb21ef551810a6f52486be.html 展开
1个回答
展开全部
这个用了指针去处理图像,实在太多了我只解释重要的部分吧。
public int[,] Binary_L(double value){
Rectangle rect = new Rectangle(0, 0, curBitmap.Width, curBitmap.Height);
//表示图像大小的矩形
System.Drawing.Imaging.BitmapData bmpData = curBitmap.LockBits(rect, System.Drawing.Imaging.ImageLockMode.ReadWrite, curBitmap.PixelFormat);
//载入内存,在内存进行图片处理
pic = new int[bmpData.Width, bmpData.Height];
//定义数组
unsafe //必须加unsafe才能在C#使用指针
{
byte* ptr = (byte*)(bmpData.Scan0); //获取指向在内存的所有像素的指针,以byte回值
for (int i = 0; i < bmpData.Height; i++) //遍历像素
{
for (int j = 0; j < bmpData.Width; j++)
{
//算法
if (RGB2L(ptr[2], ptr[1], ptr[0]) < value)
{
pic[j, i] = 1;
}
else
{
pic[j, i] = 0;
}
ptr += 3;
}
//指针的推加
ptr += bmpData.Stride - bmpData.Width * 3;
}
}
//解锁图片在内存里缓存以释放内存
curBitmap.UnlockBits(bmpData);
//返回先前定义的数组
return pic;
public int[,] Binary_L(double value){
Rectangle rect = new Rectangle(0, 0, curBitmap.Width, curBitmap.Height);
//表示图像大小的矩形
System.Drawing.Imaging.BitmapData bmpData = curBitmap.LockBits(rect, System.Drawing.Imaging.ImageLockMode.ReadWrite, curBitmap.PixelFormat);
//载入内存,在内存进行图片处理
pic = new int[bmpData.Width, bmpData.Height];
//定义数组
unsafe //必须加unsafe才能在C#使用指针
{
byte* ptr = (byte*)(bmpData.Scan0); //获取指向在内存的所有像素的指针,以byte回值
for (int i = 0; i < bmpData.Height; i++) //遍历像素
{
for (int j = 0; j < bmpData.Width; j++)
{
//算法
if (RGB2L(ptr[2], ptr[1], ptr[0]) < value)
{
pic[j, i] = 1;
}
else
{
pic[j, i] = 0;
}
ptr += 3;
}
//指针的推加
ptr += bmpData.Stride - bmpData.Width * 3;
}
}
//解锁图片在内存里缓存以释放内存
curBitmap.UnlockBits(bmpData);
//返回先前定义的数组
return pic;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?

2023-08-15 广告
通常情况下,我们会按照结构模型把系统产生的数据分为三种类型:结构化数据、半结构化数据和非结构化数据。结构化数据,即行数据,是存储在数据库里,可以用二维表结构来逻辑表达实现的数据。最常见的就是数字数据和文本数据,它们可以某种标准格式存在于文件...
点击进入详情页
本回答由光点科技提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询