图上的字图字部首怎么读读?

从图片中读取文字、把图片转换成文本格式(用word附带功能就能做到)_百度文库
您的浏览器Javascript被禁用,需开启后体验完整功能,
享专业文档下载特权
&赠共享文档下载特权
&100W篇文档免费专享
&每天抽奖多种福利
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
从图片中读取文字、把图片转换成文本格式(用word附带功能就能做到)
&&本文将介绍读取图片中的文字、读取书中文字、读取PDF格式文件中的文字的方法
阅读已结束,下载本文需要
定制HR最喜欢的简历
下载文档到电脑,同时保存到云知识,更方便管理
加入VIP
还剩2页未读,
定制HR最喜欢的简历
你可能喜欢图上这些字怎么读?怎么读?_百度知道
图上这些字怎么读?怎么读?
答题抽奖
首次认真答题后
即可获得3次抽奖机会,100%中奖。
诚信为本839
来自科学教育类芝麻团
诚信为本839
采纳数:35089
获赞数:45288
参与团队:
这些字多是常见字,后一半是重复字。拼音在右鬿 (qí) 魀 (gà) 嗯 (ńg,ňg,ǹg) 魀 (gà) 啊 (ā) 嗲 (diǎ) 黀 (zōu) 屮 (chè)嗲 (diǎ) 鬾 (qí) 魀 (gà) 嗲(diǎ) 嗯 (ńg,ňg,ǹg) 嗲 (diǎ) 魁 (kuí)
为你推荐:
其他类似问题
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。图片上的字怎么读?如图_百度知道
图片上的字怎么读?如图
答题抽奖
首次认真答题后
即可获得3次抽奖机会,100%中奖。
西夏文:知足常乐
为你推荐:
其他类似问题
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。图画上面四个字读什么 什么意思 谢谢
<img onerror="imgDelByClass('comimg_box');" class="piczoom mpic" alt="图
汉寿亭侯---------------关于的封号,当年,关羽杀了袁绍的大将颜良,解了白马之围,曹操便奏请献帝,封了关羽为“汉寿亭侯”。
其他答案(共1个回答)
汉寿亭侯。。。。。。。。。。。。。。。。。。
香格里拉(顺序:右上、右下、左上、左下)
菜菜是继洋葱头、兔斯基、悠嘻猴之后,又一在年轻人中兴起的可爱搞笑卡通——蘑菇头、熊猫黑框眼镜的神经质女孩,相比起动物和植物的Q版,直接采用6岁孩...
chī mèi wǎng liǎng
(形声。从鬼,离声。本义:精怪名)
传说中的山神 [mountain god]
始经魑魅之涂,卒践无人之境。...
像是“空中有月”几个字,不太确定。
答: 怎样制作黄鹂、花朵、小花?
答: 社区文化建设是城市精神文明建设的重要组成部分。在我国经济体制转轨、社会结构转型的现阶段,积极探索和推行运用美育加快社区文化建设,对于提升一个社区、一个城市的文化...
答: 社区文化建设是城市精神文明建设的重要组成部分。在我国经济体制转轨、社会结构转型的现阶段,积极探索和推行运用美育加快社区文化建设,对于提升一个社区、一个城市的文化...
每家运营商的DNS都不同,而且各省的也不同。你可以问问你的网络提供商,他们会告诉你的。(也可以通过分别访问域名和IP来检查DNS是否正常,访问域名不行,而访问IP可以,则说明DNS设置不对)
另外,如果ADSL-电脑没问题,一般ADSL-路由器也没问题的。而且采用ADSL拨号的话,DNS可以不设置的,拨号成功后会自动取得DNS服务器。
问题可能出在路由器设置上。进去检查一下吧。看看上网方式,上网用户名密码是否正确。
(有个问题要注意一下,有些地方的运营商会限制使用路由器或者限制接入数量,一般是采取绑定网卡MAC地址的方式,如果路由器设置都正常,试试路由器的MAC地址克隆功能,把电脑网卡的MAC复制过去)
要有经营场所,办理工商登记(办理卫生许可),如果觉得有必要还要到税务局买定额发票,不过奶茶店一般人家消费是不会要发票的巴,要买设备,要联系供应商备一些原料,就好啦,没啥难的,不过要赚钱的话就得选好开店地段。
办理手续的程序(申领个体执照):
1、前往工商所申请办理
2、根据工商所通知(申请办理当场就会给你个小纸条)前往办理名称预核
3、拿到名称预核通知书,办理卫生许可证(前往所在地卫生监督所办理)
4、拿着名称预核通知书和卫生许可证前往工商所核发营业执照。
一般都是对着电视墙,这样的感觉有一些对私密的保护..
因为一般人在自己家里是比较随便的,有时来了客人也来不及收敛,但是如果正对的是电视墙,就给了主人一个准备的时间,就不至于显得很尴尬..
手机密码被锁住了,那么只有拿到客服去解锁了。
如果你使用的是PIN码,被锁,那么去移动营业厅解锁。
考虑是由于天气比较干燥和身体上火导致的,建议不要吃香辣和煎炸的食物,多喝水,多吃点水果,不能吃牛肉和海鱼。可以服用(穿心莲片,维生素b2和b6)。也可以服用一些中药,如清热解毒的。
确实没有偿还能力的,应当与贷款机构进行协商,宽展还款期间或者分期归还; 如果贷款机构起诉到法院胜诉之后,在履行期未履行法院判决,会申请法院强制执行; 法院在受理强制执行时,会依法查询贷款人名下的房产、车辆、证券和存款;贷款人名下没有可供执行的财产而又拒绝履行法院的生效判决,则有逾期还款等负面信息记录在个人的信用报告中并被限制高消费及出入境,甚至有可能会被司法拘留。
第一步:教育引导
不同年龄阶段的孩子“吮指癖”的原因不尽相同,但于力认为,如果没有什么异常的症状,应该以教育引导为首要方式,并注意经常帮孩子洗手,以防细菌入侵引起胃肠道感染。
第二步:转移注意力
比起严厉指责、打骂,转移注意力是一种明智的做法。比如,多让孩子进行动手游戏,让他双手都不得闲,或者用其他的玩具吸引他,还可以多带孩子出去游玩,让他在五彩缤纷的世界里获得知识,增长见识,逐渐忘记原来的坏习惯。对于小婴儿,还可以做个小布手套,或者用纱布缠住手指,直接防止他吃手。但是,不主张给孩子手指上“涂味”,比如黄连水、辣椒水等,以免影响孩子的胃口,黄连有清热解毒的功效,吃多了还可导致腹泻、呕吐。
合肥政务区网络广告推广网络推广哪家公司比较好 一套能在互联网上跑业务的系统,被网络营销专家赞为目前最 有效的网络推广方式!
1、搜索引擎营销:分两种SEO和PPC,即搜索引擎优化,是通过对网站结构、高质量的网站主题内容、丰富而有价值的相关性外部链接进行优化而使网站为用户及搜索引擎更加友好,以获得在搜索引擎上的优势排名为网站引入流量。
良工拥有十多位资深制冷维修工程师,十二年生产与制造经验,技术力量雄厚,配有先进的测试仪器,建有系列低温测试设备,备有充足的零部件,包括大量品牌的压缩机,冷凝器,蒸发器,水泵,膨胀阀等备品库,能为客户提供迅捷,优质的工业冷水机及模温机维修和保养。
楼主,龙德教育就挺好的,你可以去试试,我们家孩子一直在龙德教育补习的,我觉得还不错。
成人可以学爵士舞。不过对柔软度的拒绝比较大。  不论跳什么舞,如果要跳得美,身体的柔软度必须要好,否则无法充分发挥出理应的线条美感,爵士舞也不值得注意。在展开暖身的弯曲动作必须注意,不适合在身体肌肉未几乎和暖前用弹振形式来做弯曲,否则更容易弄巧反拙,骨折肌肉。用静态方式弯曲较安全,不过也较必须耐性。柔软度的锻炼动作之幅度更不该超过疼痛的地步,肌肉有向上的感觉即可,动作(角度)保持的时间可由10馀秒至30-40秒平均,时间愈长对肌肉及关节附近的联结的组织之负荷也愈高。
正在加载...
Copyright &
Corporation, All Rights Reserved
确定举报此问题
举报原因(必选):
广告或垃圾信息
激进时政或意识形态话题
不雅词句或人身攻击
侵犯他人隐私
其它违法和不良信息
报告,这不是个问题
报告原因(必选):
这不是个问题
这个问题分类似乎错了
这个不是我熟悉的地区
相关问答:12345666666666大家一起研究一下。我把身份证扫描出来后,能不能从该图片中把上面的文字信息读取出来?比如把姓名、性别、出生、住址等信息都读出来,显-CSDN论坛
VCL组件开发及应用
大家一起研究一下。我把身份证扫描出来后,能不能从该图片中把上面的文字信息读取出来?比如把姓名、性别、出生、住址等信息都读出来,显
大家一起研究一下。我把身份证扫描出来后,能不能从该图片中把上面的文字信息读取出来?比如把姓名、性别、出生、住址等信息都读出来,显示到Edit中?请大家一起研究一下,有没有相关的控件,或者手段。
如果能解决这个问题,真是感激不尽,高分相送。
存成图片也许更方便一些。。。
偶正在看这个,最近比较忙,不好意思!
挺实用的,不会,帮你顶
控件?不知道,不过你可以用图象识别的算法自己写,由于身份证上的信息位置一般很固定,所以工作量还小了一点。你可以上北邮的人工智能研究所的网站,那里有一些资料,可以看看先。
这就是OCR嘛
这就是OCR嘛
挺实用的,不会,帮你顶
虽然&各个图片格式不一样
但是都是以二进制存储&OCR&就是找出与你想要的特定字符相近的&存储段
不是很容易实现的
那就是图形识别系统了。学!!!!
算了吧。身份证的复印效果都不好,识别准确率是个大难题,对于身份证识别来说,准确率可是个关键问题。我的身份证因为进了水,肉眼都看不清了,看你怎么机器识别?歇歇吧,还是等着身份证改成IC卡吧。
现在早已有现成的扫描技术(装个扫描软件),我用过,只不过识别率在90%左右,在自己编写代码倒不会!关注!
Delphi中如何编写图像解析组件
Delphi作为一个强大的RAD开发工具,在应用软件的开发方面一直有着它的独特优势。这种优势同样体现在图像相关软件的开发上。如果你要在桌面上放置一张图像,只需要简单的在桌面上放置一个Image控件,然后就可以通过其Image属性任意的加载BMP、WMF、EMF等格式的图像。如果还想增加对JPEG的支持,只需要添加一个JPEG单元即可。甚至在Image中加载一张JPEG后,Delphi会自动添加一个JPEG单元。一切做起来就是这么的简单。基本格式都已经封装在了VCL中,那么Delphi对类似JPEG这样图像格式的支持是如何实现的呢?
其实从TPicture中很容易看出其中的实现过程,它可以理解为所有图像对象的容器。
如JPEG.pas中有如下两句代码:
TPicture.RegisterFileFormat('jpeg',&sJPEGImageFile,&TJPEGImage);
TPicture.RegisterFileFormat('jpg',&sJPEGImageFile,&TJPEGImage);
(sJPEGImageFile&=&'JPEG&Image&File',见JConsts.pas)
什么意思呢?可以理解为将TJPEGImage注册为jpeg、jpg两种后缀图像文件的类。
其实质就是将后缀,图像描述,具体图像解析类等信息保存到了FileFormats。
具体见如下代码:
var&FileFormats:&TFileFormatsList&=&
class&procedure&TPicture.RegisterFileFormat(const&AExtension,
&&ADescription:&&AGraphicClass:&TGraphicClass);
&&GetFileFormats.Add(AExtension,&ADescription,&0,&AGraphicClass);
function&GetFileFormats:&TFileFormatsL
&&if&FileFormats&=&nil&then&FileFormats&:=&TFileFormatsList.C
&&Result&:=&FileF
而TPicture默认支持四种图像格式是因为TFileFormatsList的构造函数中已进行了添加。
constructor&TFileFormatsList.C
&&inherited&C
&&Add('wmf',&SVMetafiles,&0,&TMetafile);
&&Add('emf',&SVEnhMetafiles,&0,&TMetafile);
&&Add('ico',&SVIcons,&0,&TIcon);
&&Add('bmp',&SVBitmaps,&0,&TBitmap);
也正是通过FileFormats中保存的信息,控件OpenPictureDialog中自动生成了所支持文件类型的列表。
那么该如何编写这些图像解析类呢?
TGraphic是TBitmap、TIcon、TMetafile对象的基类。同样这里的图像解析类也应该从TGraphic派生,利用很多VCL中已经封装了的代码,可以省去很多工作。
实现基本功能一般只需要重载三个成员:
TXXXImage&=&class(TGraphic)
&&procedure&Draw(ACanvas:&TC&const&Rect:&TRect);&//绘制图像到画布
&&procedure&LoadFromStream(Stream:&TStream);&&//从流中获取图像数据
&&procedure&SaveToStream(Stream:&TStream);&&//将图像数据写入流中
因为TGraphic.LoadFromFileTGraphic.SaveToFile中已经实现了由文件名读取数据到流的将流中的数据写入到对应文件的功能,无特殊需要这里可以不用重载。而成员Draw自然就是用于实现将图像绘制到画布,由于TCanvas对GDI的完善封装,这里不需要考虑如何将图像利用GDI绘制到窗体的这个过程。剩下的就只是编写图像解析部分的代码啦。
下面就以RAS格式为例做进一步的探讨。
这里没有用TGraphic作为基类,而是用了TBitmap,这样进一步把Draw的实现过程都省了,只需要在LoadFromStream中实现转化为位图的过程就可以了。
TRASGraphic&=&class(TBitmap)
&&procedure&LoadFromStream(Stream:&TStream);&
&&procedure&SaveToStream(Stream:&TStream);&
//定义描述RAS文件头的记录类型
TRASHeader&=&packed&record
&&Magic,&&&&&&&&&&&&&&&//标记
&&Width,&&&&&&&&&&&&&&&//宽
&&Height,&&&&&&&&&&&&&&//高
&&Depth,&&&&&&&&&&&&&&&//色深
&&Length,&&&&&&&&&&&&&&//图像数据长度,可能会等于0
&&RasType,&&&&&&&&&&&&&//格式类型
&&MapType,&&&&&&&&&&&&&//调色板类型
&&MapLength:&C&//调色板数据长度
//定义一个用来描述RAS文件头的记录类型是非常必要的
//定义代表RAS所有类型的常量
&&RT_OLD&=&0;
&&RT_STANDARD&=&1;
&&RT_BYTE_ENCODED&=&2;
&&RT_FORMAT_RGB&=&3;
&&RT_FORMAT_TIFF&=&4;
&&RT_FORMAT_IFF&=&5;
&&RT_EXPERIMENTAL&=&$FFFF;
//定义代表调色板类型的常量
&&RMT_NONE&=&0;//无调色板数据
&&RMT_EQUAL_RGB&=&1;
&&RMT_RAW&=&2;
{如果RAS的格式为RT_OLD,数据长度可能为0}
function&SwapLong(const&Value:&Cardinal):&C
&&BSWAP&EAX//调用字节交换指令
//抛出异常,参数为具体的异常信息
procedure&RasError(const&ErrorString:&String);
&&raise&EInvalidGraphic.Create(ErrorString);
{下面是实现部分的代码。}
procedure&TRASGraphic.LoadFromStream(Stream:&TStream);
&&Header:&TRASH
&&Row8:&PB
&&Row24:&PRGBT
&&Row32:&PRGBQ
&&PMap:&PB
&&MapReaded:&B
&&Pal:&TMaxLogP
&&R,G,B:array[0..255]&of&B
&&ColorByte:&B
with&Stream&do
&&ReadBuffer(Header,&SizeOf(Header));&//将文件头数据读取到记录Header中
&&with&Header&do
&&&&Width&:=&SwapLong(Width);
&&&&Height&:=&SwapLong(Height);
&&&&Depth&:=&SwapLong(Depth);
&&&&Length&:=&SwapLong(Length);
&&&&RASType&:=&SwapLong(RASType);
&&&&MapType&:=&SwapLong(MapType);
&&&&MapLength&:=&SwapLong(MapLength);
&&//由于读取数据的顺序问题,这里需要调用上面的SwapLong改变顺序。
&&if&(Header.Magic&=&$956AA659)&and
&&(Header.Width&&0)&and&(Header.Height&&0)&and
&&(Header.Depth&in&[1,8,24,32])&and&(Header.RasType&in&[RT_OLD,RT_STANDARD,RT_BYTE_ENCODED,RT_FORMAT_RGB])&then
&&&&Width&:=&Header.W
&&&&Height&:=&Header.H
&&&&MapReaded&:=&F
case&Header.Depth&of
&&&&&&1:PixelFormat&:=&pf1B
&&&&&&begin
&&&&&&&&PixelFormat&:=&pf8B
&&&&&&&&case&Header.MapType&of
&&&&&&&&&&RMT_NONE:
&&&&&&&&&&begin
&&&&&&&&&&&&Pal.palVersion:=$300;
&&&&&&&&&&&&Pal.palNumEntries:=256;
&&&&&&&&&&&&for&I&:=&0&to&255&do
&&&&&&&&&&&&begin
&&&&&&&&&&&&&&Pal.palPalEntry[I].peRed:=I;
&&&&&&&&&&&&&&Pal.palPalEntry[I].peGreen:=I;
&&&&&&&&&&&&&&Pal.palPalEntry[I].peBlue:=I;
&&&&&&&&&&&&&&Pal.palPalEntry[I].peFlags:=0;
&&&&&&&&&&&&
&&&&&&&&&&&&Palette&:=&CreatePalette(PLogPalette(@Pal)^);
&&&&&&&&&&&&//当图像色深为8位,而又不存在调色板信息时,创建一个8位的灰度调色板
&&&&&&&&&&
&&&&&&&&&&RMT_EQUAL_RGB:
&&&&&&&&&&begin
&&&&&&&&&&&&if&(Header.MapLength&=&3*256)&then
&&&&&&&&&&&&begin
&&&&&&&&&&&&&&Pal.palVersion:=$300;
&&&&&&&&&&&&&&Pal.palNumEntries:=256;
&&&&&&&&&&&&&&ReadBuffer(R,256);
&&&&&&&&&&&&&&ReadBuffer(G,256);
&&&&&&&&&&&&&&ReadBuffer(B,256);
&&&&&&&&&&&&&&for&I&:=&0&to&255&do
&&&&&&&&&&&&&&begin
&&&&&&&&&&&&&&&&Pal.palPalEntry[I].peRed:=R[I];
&&&&&&&&&&&&&&&&Pal.palPalEntry[I].peGreen:=G[I];
&&&&&&&&&&&&&&&&Pal.palPalEntry[I].peBlue:=B[I];
&&&&&&&&&&&&&&&&Pal.palPalEntry[I].peFlags:=0;
&&&&&&&&&&&&&&
&&&&&&&&&&&&&&Palette&:=&CreatePalette(PLogPalette(@Pal)^);
&&&&&&&&&&&&&&//读取文件中的调色板信息
&&&&&&&&&&&&&&//相关调色板操作的API请查询MSDN
&&&&&&&&&&&&end
&&&&&&&&&&&&else
&&&&&&&&&&&&&&RasError('调色板长度错误!');
&&&&&&&&&&&&MapReaded&:=&T
&&&&&&&&&&
&&&&&&&&&&RMT_RAW:
&&&&&&&&&&begin
&&&&&&&&&&&&RasError('不支持的文件格式!');
&&&&&&&&&&
&&&&&&24:PixelFormat&:=&pf24B
&&&&&&begin
&&&&&&&&PixelFormat&:=&pf32B
&&&&&&&&//
&&&&if&(not&MapReaded)&and&(Header.MapLength&0)&then
&&&&&&Position&:=&Position&+&Header.MapL
&&&&//如果调色板长度不为0,而又未正确读取相关信息时,跳过这一段数据
&&&&case&Header.Depth&of
&&&&&&begin
&&&&&&&&if&Header.RasType&=&RT_BYTE_ENCODED&then
&&&&&&&&begin
&&&&&&&&&&//ENCODE
&&&&&&&&&&//关于RLE压缩的编码解码请自行查阅资料
&&&&&&&&&&RasError('不支持压缩格式!');
&&&&&&&&end
&&&&&&&&else
&&&&&&&&begin
&&&&&&&&&&for&Y&:=&0&to&Height-1&do
&&&&&&&&&&begin
&&&&&&&&&&&&Row8:=ScanLine[Y];
&&&&&&&&&&&&ReadBuffer(Row8^,Width);
&&&&&&&&&&&&if&(Width&mod&2)=1&then
&&&&&&&&&&&&begin
&&&&&&&&&&&&&&&Position&:=&Position&+&1;
&&&&&&&&&&&&
&&&&&&&&&&
&&&&&&{end&of&8Bit}
&&&&&&begin
&&&&&&&&case&Header.RasType&of
&&&&&&&&&&RT_OLD,
&&&&&&&&&&RT_STANDARD:
&&&&&&&&&&begin
&&&&&&&&&&&&for&Y&:=&0&to&Height-1&do
&&&&&&&&&&&&begin
&&&&&&&&&&&&&&Row24:=ScanLine[Y];
&&&&&&&&&&&&&&ReadBuffer(Row24^,Width*3);
&&&&&&&&&&&&&&if&(Width&mod&2)=1&then
&&&&&&&&&&&&&&begin
&&&&&&&&&&&&&&&&&Position&:=&Position&+&1;
&&&&&&&&&&&&&&
&&&&&&&&&&&&
&&&&&&&&&&
&&&&&&&&&&RT_BYTE_ENCODED:
&&&&&&&&&&begin
&&&&&&&&&&&&//ENCODE
&&&&&&&&&&&&//关于RLE压缩的编码解码请自行查阅资料
&&&&&&&&&&&&RasError('不支持压缩格式!');
&&&&&&&&&&
&&&&&&&&&&RT_FORMAT_RGB:
&&&&&&&&&&begin
&&&&&&&&&&&&for&Y&:=&0&to&Height-1&do
&&&&&&&&&&&&begin
&&&&&&&&&&&&&&Row24:=ScanLine[Y];
&&&&&&&&&&&&&&ReadBuffer(Row24^,Width*3);
&&&&&&&&&&&&&&for&I&:=&0&to&Width-1&do
&&&&&&&&&&&&&&begin
&&&&&&&&&&&&&&&&ColorByte&:=&Row24^.rgbtR
&&&&&&&&&&&&&&&&Row24^.rgbtRed&:=&Row24^.rgbtB
&&&&&&&&&&&&&&&&Row24^.rgbtBlue&:=&ColorB
&&&&&&&&&&&&&&&&Inc(Row24);
&&&&&&&&&&&&&&
&&&&&&&&&&&&&&//当为RT_FORMAT_RGB格式时,按RGB获取数据,这里需要交换R和B的值
&&&&&&&&&&&&&&if&(Width&mod&2)=1&then
&&&&&&&&&&&&&&begin
&&&&&&&&&&&&&&&&&Position&:=&Position&+&1;
&&&&&&&&&&&&&&
&&&&&&&&&&&&
&&&&&&&&&&{end&of&RT_FORMAT_RGB}
&&&&&&&&&&else
&&&&&&&&&&&&RasError('不支持的文件格式!');
&&&&&&{end&of&24Bit}
&&&&&&begin
&&&&&&&&case&Header.RasType&of
&&&&&&&&&&RT_OLD,
&&&&&&&&&&RT_STANDARD:
&&&&&&&&&&begin
&&&&&&&&&&&&for&Y&:=&0&to&Height-1&do
&&&&&&&&&&&&begin
&&&&&&&&&&&&&&Row32:=ScanLine[Y];
&&&&&&&&&&&&&&ReadBuffer(Row32^,Width*4);
&&&&&&&&&&&&&&for&I&:=&0&to&Width-1&do
&&&&&&&&&&&&&&begin
&&&&&&&&&&&&&&&&ColorByte&:=&Row32^.rgbR
&&&&&&&&&&&&&&&&Row32^.rgbReserved&:=&Row32^.rgbB
&&&&&&&&&&&&&&&&Row32^.rgbBlue&:=&Row32^.rgbG
&&&&&&&&&&&&&&&&Row32^.rgbGreen&:=&Row32^.rgbR
&&&&&&&&&&&&&&&&Row32^.rgbRed&:=&ColorB
&&&&&&&&&&&&&&&&Inc(Row32);
&&&&&&&&&&&&&&
&&&&&&&&&&&&&&//32位色时,需要调整读取后数据的顺序
&&&&&&&&&&&&
&&&&&&&&&&
&&&&&&&&&&RT_BYTE_ENCODED:
&&&&&&&&&&begin
&&&&&&&&&&&&//ENCODE
&&&&&&&&&&&&//关于RLE压缩的编码解码请自行查阅资料
&&&&&&&&&&&&RasError('不支持压缩格式!');
&&&&&&&&&&
&&&&&&&&&&RT_FORMAT_RGB:
&&&&&&&&&&begin
&&&&&&&&&&&&For&Y&:=&0&to&Height-1&do
&&&&&&&&&&&&begin
&&&&&&&&&&&&&&Row32:=ScanLine[Y];
&&&&&&&&&&&&&&ReadBuffer(Row32^,Width*4);
&&&&&&&&&&&&&&for&I&:=&0&to&Width-1&do
&&&&&&&&&&&&&&begin
&&&&&&&&&&&&&&&&ColorByte&:=&Row32^.rgbB
&&&&&&&&&&&&&&&&Row32^.rgbBlue&:=&Row32^.rgbR
&&&&&&&&&&&&&&&&Row32^.rgbReserved&:=&ColorB
&&&&&&&&&&&&&&&&ColorByte&:=&Row32^.rgbG
&&&&&&&&&&&&&&&&Row32^.rgbGreen&:=&Row32^.rgbR
&&&&&&&&&&&&&&&&Row32^.rgbRed&:=&ColorB
&&&&&&&&&&&&&&&&Inc(Row32);
&&&&&&&&&&&&&&
&&&&&&&&&&&&&&//这里将顺序调整和R和B值的交换的代码进行了合并
&&&&&&&&&&&&
&&&&&&&&&&{end&of&RT_FORMAT_RGB}
&&&&&&&&&&else
&&&&&&&&&&&&RasError('不支持的文件格式!');
&&&&&&&&{end&of&32Bit}
&&&&&&else
&&&&&&begin
&&&&&&&&FreeI
&&&&&&&&RasError('不支持的文件格式!');
&&&&RasError('不支持的文件格式!');
{end&with}
{上面的代码中多次出现如下代码:
if&(Width&mod&2)=1&then
&&Position&:=&Position&+&1;
这是因为每行的数据都要按字对齐,既每行的数据都要用偶数的字节记录。当每个像素的颜色信息用1字节(8位)或3字节(24位)记录且每行像素数为奇数时,要补齐一个字节。所以这里跳过一个字节。
后面代码中的
if&(Width&mod&2)&=&1&then
&&FillByte:=0;
&&Stream.Write(FillByte,1);
也是基于同一道理。}&
procedure&TRASGraphic.SaveToStream(Stream:&TStream);
&&Header:&TRASH
&&Row8:&PB
&&Row24:&PRGBT
&&Row32:&PRGBQ
&&FillByte:&B
&&Pal:&TMaxLogP
&&R,G,B:array[0..255]&of&B
Header.Magic&:=&$956AA659;
Header.Width&:=&SwapLong(Width);
Header.Height&:=&SwapLong(Height);
Header.RasType&:=&SwapLong(RT_STANDARD);
if&(PixelFormat&=&pf1bit)&or&(PixelFormat&=&pf4bit)&then
&&PixelFormat:=pf8bit
else&if&(PixelFormat&&&&pf8bit)&and&(PixelFormat&&&&pf24bit)&and&(PixelFormat&&&&pf32bit)&then
&&PixelFormat:=pf24
case&PixelFormat&of
&&&&Header.Length&:=&SwapLong(Height*(Width+(Width&mod&2)));
&&&&Header.Depth&:=&SwapLong(8);
&&&&Header.MapType&:=&SwapLong(RMT_EQUAL_RGB);
&&&&Header.MapLength&:=&SwapLong(3*256);
&&&&Stream.WriteBuffer(Header,SizeOf(Header));
&&&&GetPaletteEntries(Palette,&0,&256,&Pal.palPalEntry);
&&&&for&I&:=&0&to&255&do
&&&&&&R[I]:=Pal.palPalEntry[I].peR
&&&&&&G[I]:=Pal.palPalEntry[I].peG
&&&&&&B[I]:=Pal.palPalEntry[I].peB
&&&&//相关调色板操作的API请查询MSDN
&&&&Stream.WriteBuffer(R,256);
&&&&Stream.WriteBuffer(G,256);
&&&&Stream.WriteBuffer(B,256);
&&&&for&Y&:=&0&to&Height-1&do
&&&&&&Row8&:=&ScanLine[Y];
&&&&&&Stream.WriteBuffer(Row8^,Width);
&&&&&&if&(Width&mod&2)&=&1&then
&&&&&&begin
&&&&&&&&FillByte:=0;
&&&&&&&&Stream.Write(FillByte,1);
&&pf32bit:
&&&&Header.Length&:=&SwapLong(Height*Width*4);
&&&&Header.Depth&:=&SwapLong(32);
&&&&Header.MapType&:=&SwapLong(RMT_NONE);
&&&&Header.MapLength&:=&0;
&&&&Stream.WriteBuffer(Header,SizeOf(Header));
&&&&for&Y&:=&0&to&Height-1&do
&&&&&&Row32&:=&ScanLine[Y];
&&&&&&for&I&:=&0&to&Width-1&do
&&&&&&begin
&&&&&&&&Stream.WriteBuffer(Row32.rgbReserved,1);
&&&&&&&&Stream.WriteBuffer(Row32^,3);
&&&&&&&&Inc(Row32);
&&&&Header.Length&:=&SwapLong(Height*Width*3);
&&&&Header.Depth&:=&SwapLong(24);
&&&&Header.MapType&:=&SwapLong(RMT_NONE);
&&&&Header.MapLength&:=&0;
&&&&Stream.WriteBuffer(Header,SizeOf(Header));
&&&&for&Y&:=&0&to&Height-1&do
&&&&&&Row24&:=&ScanLine[Y];
&&&&&&Stream.WriteBuffer(Row24^,Width*3);
&&&&&&if&(Width&mod&2)&=&1&then
&&&&&&begin
&&&&&&&&FillByte:=0;
&&&&&&&&Stream.Write(FillByte,1);
&&&&&&&&&&&&
//SaveToStream基本上就是LoadFromStream的逆过程。
initialization
&&TPicture.RegisterFileFormat('RAS',&'Sun&RAS',&TRASGraphic);
finalization
&&TPicture.UnregisterGraphicClass(TRASGraphic);
加上这几句代码,一个完整的图像解析组件就完成了。
从该图片中把上面的文字信息读取出来……
身份证……
难、难、难!
我认为任何软件都达不到所需要的准确度的.
所以不如不要浪費时间去搞这些玩意.
留给科学家们去搞吧.
嘿嘿,超难
不會,難搞!
感觉很难啊
这件事可真麻烦了。清华紫光有的。
呵呵,我不会
你还是改成手工录入吧:)
小波算法,
。。。。。
图像识别,
1、识别目前的身份证可借鉴“清华紫光OCR”
2、其实我觉得你现在不必操这份心了,好像从日起实行新一代身份证,条纹码识别,就简单多了!!
纠正一下楼上的,呵呵。
日起实行新一代身份证,是IC卡的,里面存储了身份证上的所有信息。
包括照片。
用OCR进行处理可能要简单一些,具体办法是安装一个清华文通OCR或者汉王OCR软件后,可以在Delphi中导入相应的类库,就可是进行文字识别了。以前用PB做过这类问题,效果可以。
不足的地方是有时候对识别出的文字,可能会出现错误,主要是姓名,可以通过加载特殊字库。
也可以搜索以下看是否有相应的OCR组件,
好象普通的OCR还有些问题,不是简单的白纸黑字呀
这个虽然很早就有人研究,但也是近年来的新技术成果,不容易!下面是我搜索到的有关OCR的资料:
&&&&http://www.cybersky.com.cn/skill/ocr.htm
身份证既然格式固定,而且扫描后只有黑白二色,不妨先将扫描后的图片统一处理成同样大小的规格,然后按照点阵读取上面的资料,再COPY这些点阵到WINDOWS的TRUETYPE造字程序中(或者copy到一个专用的剪切板里),最后再放到EDIT里~~~~~
&&&&不懂真正的OCR技术怎么搞,你的这么样可以,当然做起来可没这么简单!
我不会~~~谁教我啊~~~谢谢咯~~
&#xe60a;回复

我要回帖

更多关于 传图读字 的文章

 

随机推荐