资源简介
学习文字识别,看到了图片的二值化,出于钻研态度自己试了试图片二值化,用到了灰度阈值矩阵,没看过别人的,不过估计应该是有人研究过的,代码C#写的。

代码片段和文件信息
using System;
using System.Drawing;
using System.Drawing.Imaging;
using System.Windows.Forms;
namespace BinaryzationTest
{
public partial class Form1 : Form
{
string SourceFile;
//灰度矩阵灵敏度,越高效果越好,但越耗时
int Sensibility = 1;
public Form1()
{
InitializeComponent();
}
private void SelectBtn_Click(object sender EventArgs e)
{
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
SourceFile = openFileDialog1.FileName;
ImgPath.Text = SourceFile;
SourceImg.BackgroundImage = new Bitmap(SourceFile);
BinaryzatedImg.BackgroundImage = Img2Gray(new Bitmap(SourceFile));
}
}
//图片灰度化,速度快
public static unsafe Bitmap Img2Gray(Bitmap curBitmap)
{
int width = curBitmap.Width;
int height = curBitmap.Height;
Bitmap back = new Bitmap(width height);
byte temp;
Rectangle rect = new Rectangle(0 0 curBitmap.Width curBitmap.Height);
//这种速度最快
BitmapData bmpData = curBitmap.LockBits(rect ImageLockMode.ReadWrite PixelFormat.Format24bppRgb);//24位rgb显示一个像素,即一个像素点3个字节,每个字节是BGR分量。Format32bppRgb是用4个字节表示一个像素
byte* ptr = (byte*)(bmpData.Scan0);
for (int j = 0; j < height; j++)
{
for (int i = 0; i < width; i++)
{
//ptr[2]为r值,ptr[1]为g值,ptr[0]为b值
temp = (byte)(0.299 * ptr[2] + 0.587 * ptr[1] + 0.114 * ptr[0]);
back.SetPixel(i j Color.FromArgb(temp temp temp));
ptr += 3; //Format24bppRgb格式每个像素占3字节
}
ptr += bmpData.Stride - bmpData.Width * 3;//每行读取到最后“有用”数据时,跳过未使用空间XX
}
curBitmap.UnlockBits(bmpData);
return back;
}
//图片灰度化速度慢
public static Bitmap Img2Gray2(Bitmap curBitmap)
{
int width = curBitmap.Width;
int height = curBitmap.Height;
Bitmap back = new Bitmap(width height);
int GrayScale = 0;
for (int i = 0; i < width; i++)
{
for (int j = 0; j < height; j++)
{
//ptr[2]为r值,ptr[1]为g值,ptr[0]为b值
GrayScale = curBitmap.GetPixel(i j).R * 299 / 1000 + curBitmap.GetPixel(i j).G * 587 / 1000 + curBitmap.GetPixel(i j).B * 114 / 1000;
back.SetPixel(i j Color.FromArgb(GrayScale GrayScale GrayScale));
}
}
return back;
}
//计算图片像素点归属灰度矩阵位置
public int GetIndex(int location int length)
{
return location * Sensibility / length;
}
public Bitmap Gray2Binaryzation(Bitmap GrayImg)
{
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
..A..H. 46592 2018-09-18 19:46 BinaryzationTest\.vs\BinaryzationTest\v15\.suo
文件 13824 2018-09-18 17:45 BinaryzationTest\BinaryzationTest\bin\Debug\BinaryzationTest.exe
文件 26112 2018-09-18 17:45 BinaryzationTest\BinaryzationTest\bin\Debug\BinaryzationTest.pdb
文件 3444 2018-09-18 17:31 BinaryzationTest\BinaryzationTest\BinaryzationTest.csproj
文件 5664 2018-09-18 19:46 BinaryzationTest\BinaryzationTest\Form1.cs
文件 12271 2018-09-18 17:43 BinaryzationTest\BinaryzationTest\Form1.Designer.cs
文件 6020 2018-09-18 17:43 BinaryzationTest\BinaryzationTest\Form1.resx
文件 1082 2018-09-18 16:33 BinaryzationTest\BinaryzationTest\obj\Debug\BinaryzationTest.csproj.FileListAbsolute.txt
文件 1012 2018-09-18 17:43 BinaryzationTest\BinaryzationTest\obj\Debug\BinaryzationTest.csproj.GenerateResource.Cache
文件 2210 2018-09-18 15:28 BinaryzationTest\BinaryzationTest\obj\Debug\BinaryzationTest.csprojResolveAssemblyReference.cache
文件 13824 2018-09-18 17:45 BinaryzationTest\BinaryzationTest\obj\Debug\BinaryzationTest.exe
文件 180 2018-09-18 17:43 BinaryzationTest\BinaryzationTest\obj\Debug\BinaryzationTest.Form1.resources
文件 26112 2018-09-18 17:45 BinaryzationTest\BinaryzationTest\obj\Debug\BinaryzationTest.pdb
文件 180 2018-09-18 17:31 BinaryzationTest\BinaryzationTest\obj\Debug\BinaryzationTest.Properties.Resources.resources
文件 42 2018-09-18 15:22 BinaryzationTest\BinaryzationTest\obj\Debug\CoreCompileInputs.cache
文件 864 2018-09-18 15:22 BinaryzationTest\BinaryzationTest\obj\Debug\DesignTimeResolveAssemblyReferences.cache
文件 7005 2018-09-18 17:31 BinaryzationTest\BinaryzationTest\obj\Debug\DesignTimeResolveAssemblyReferencesInput.cache
文件 497 2018-09-18 15:22 BinaryzationTest\BinaryzationTest\Program.cs
文件 1330 2018-09-18 15:22 BinaryzationTest\BinaryzationTest\Properties\AssemblyInfo.cs
文件 2845 2018-09-18 15:22 BinaryzationTest\BinaryzationTest\Properties\Resources.Designer.cs
文件 5612 2018-09-18 15:22 BinaryzationTest\BinaryzationTest\Properties\Resources.resx
文件 1103 2018-09-18 15:22 BinaryzationTest\BinaryzationTest\Properties\Settings.Designer.cs
文件 249 2018-09-18 15:22 BinaryzationTest\BinaryzationTest\Properties\Settings.settings
文件 1015 2018-09-18 15:22 BinaryzationTest\BinaryzationTest.sln
目录 0 2018-09-18 15:22 BinaryzationTest\BinaryzationTest\obj\Debug\TempPE
目录 0 2018-09-18 15:22 BinaryzationTest\.vs\BinaryzationTest\v15
目录 0 2018-09-18 15:28 BinaryzationTest\BinaryzationTest\bin\Debug
目录 0 2018-09-18 17:43 BinaryzationTest\BinaryzationTest\obj\Debug
目录 0 2018-09-18 15:22 BinaryzationTest\.vs\BinaryzationTest
目录 0 2018-09-18 15:22 BinaryzationTest\BinaryzationTest\bin
............此处省略8个文件信息
相关资源
- C# 软件版本更新
- C#屏幕软键盘源码,可以自己定制界面
- 智慧城市 智能家居 C# 源代码
- c#获取mobile手机的IMEI和IMSI
- C#实现简单QQ聊天程序
- 操作系统 模拟的 欢迎下载 C#版
- C#写的计算机性能监控程序
- 用C#实现邮件发送,有点类似于outlo
- MVC model层代码生成器 C#
- c#小型图书销售系统
- C# Socket Server Client 通讯应用 完整的服
- c# winform 自动登录 百度账户 源代码
- C#编写的16进制计算器
- C#TCP通信协议
- C# 数据表(Dataset)操作 合并 查询一
- C#语音识别系统speechsdk51,SpeechSDK51L
- 数据库备份还原工具1.0 C# 源码
-
[免费]xm
lDocument 节点遍历C# - EQ2008LEDc#开发实例
- DirectX.Capturec# winform 操作摄像头录像附
- c# 实现的最大最小距离方法对鸢尾花
- C#版保龄球记分代码
- C#自定义控件
- 基于c#的实验室设备管理系统621530
- C# 使用ListView控件实现图片浏览器(源
- C#简单窗体聊天程序
- C#指纹识别系统程序 报告
- c# 高校档案信息管理系统
- c#向word文件插入图片
- C#左侧导航菜单(动态生成)
评论
共有 条评论