当前位置:  编程技术>移动开发
本页文章导读:
    ▪smdkc100之u-boot 2010.03代码的分析二        smdkc100之u-boot 2010.03代码的分析2下面是一条跳转指令,代码这里不贴,但是其中的代码很重要,在lowlevel.S中实现比如说点亮LED灯、关闭watchdog、关闭中断、串口初始化、系统时钟初始、nand flash.........
    ▪ Tesseract-OCR 字符识别-样书训练        Tesseract-OCR 字符识别---样本训练        Tesseract是一个开源的OCR(Optical Character Recognition,光学字符识别)引擎,可以识别多种格式的图像文件并将其转换成文本,目前已支持60多种语言(包.........
    ▪ Qt的装配       Qt的安装     1. 首先安装qtcreator(qt-creator-windows-opensource-2.6.0.exe),是Qt的集成开发环境,安装后并没有Qt Gui 应用程序的选项,必须安装Qt的library,提供对创建Qt应用程序的支持。(Qt开发环.........

[1]smdkc100之u-boot 2010.03代码的分析二
    来源: 互联网  发布时间: 2014-02-18
smdkc100之u-boot 2010.03代码的分析2

下面是一条跳转指令,代码这里不贴,但是其中的代码很重要,在lowlevel.S中实现比如说点亮LED灯、关闭watchdog、关闭中断、串口初始化、系统时钟初始、nand flash初始化、内存控制器初始化。不过说实在的,去仔细分析这些初始化的过程,对于你对如何控制硬件有很大的帮

助, 对于这个函数,所要说的东西太多,会在后面的文章中单独分析它,现在先知道功能就好,没有它代码无法启动。

*/

--------------------

bllowlevel_init

--------------------

 

/* 跳转出来以后,继续执行下面的代码,下面的代码是判断程序是否已经在ram中了,在的话就不拷贝,直接跳转到stack_setup了,否则

   继续执行copy_loop */

--------------------

#ifndefCONFIG_SKIP_RELOCATE_UBOOT

relocate:                       @relocate U-Boot to RAM

       adr   r0,_start        @r0 <- current position of code

       ldr   r1,_TEXT_BASE         @ test if we run from flash or RAM

       cmp r0,r1                    @ don't reloc during debug

       beq  stack_setup

 

       ..........................................

 

copy_loop:                          @copy 32 bytes at a time

       ldmia      r0!,{r3 - r10}              @ copy from source address [r0]

       stmia       r1!,{r3 - r10}              @ copy to   targetaddress [r1]

       cmp r0,r2                    @ until source end addreee [r2]

       ble   copy_loop

#endif     /* CONFIG_SKIP_RELOCATE_UBOOT */

--------------------

 

--------------------

 

/*

   堆栈初始化代码

*/

--------------------

 /* Set up the stack          */
stack_setup:
ldr r0, _TEXT_BASE  /* upper 128 KiB:relocated uboot   */
 sub r0, r0, #CFG_MALLOC_LEN /* mallocarea                      */
 sub r0, r0, #CFG_GBL_DATA_SIZE /*bdinfo                        */
#ifdef CONFIG_USE_IRQ
 sub r0, r0,#(CONFIG_STACKSIZE_IRQ+CONFIG_STACKSIZE_FIQ)
#endif
 sub  sp, r0, #12 /* leave 3 words for abort-stack   */

 and         sp, sp, #~7         @ 8 byte alinged for (ldr/str)d

#endif

--------------------

 

/* 清零BSS段内容为0 */

--------------------

clear_bss:
 ldr r0, _bss_start  /* find start of bss segment        */
 ldr r1, _bss_end  /* stop here                        */
 mov r2, #0x00000000  /* clear                            */

clbss_l:
 str  r2, [r0]             @ clear BSS location

 cmp r0, r1                  @are we at the end yet

 add       r0, r0, #4             @ increment clear index pointer

 bne       clbss_l                 @ keep clearing till at end

--------------------

 

/* 跳转到uboot代码的第二个阶段,第二阶段基本上都是用C实现的,幸好前面sp的值已经设置好了 */

--------------------

 ldr pc, _start_armboot

_start_armboot:.word start_armboot

--------------------


    
[2] Tesseract-OCR 字符识别-样书训练
    来源: 互联网  发布时间: 2014-02-18
Tesseract-OCR 字符识别---样本训练

        Tesseract是一个开源的OCR(Optical Character Recognition,光学字符识别)引擎,可以识别多种格式的图像文件并将其转换成文本,目前已支持60多种语言(包括中文)。 Tesseract最初由HP公司开发,后来由Google维护,目前发布在Googel Project上。地址为http://code.google.com/p/tesseract-ocr/。


使用默认的语言库识别

1.安装Tesseract

        从http://code.google.com/p/tesseract-ocr/downloads/list下载Tesseract,目前版本为Tesseract3.02。因为只是测试使用,这里直接下载winodws下的安装文件tesseract-ocr-setup-3.02.02.exe。安装成功后会在相应磁盘上生成一个Tesseract-OCR目录。通过目录下的tesseract.exe程序就可以对图像字符进行识别了。
2.准备一副待识别的图像,这里用画图工具随便写了一串数字,保存为number.jpg,如下图所示:
        

3.  打开命令行,定位到Tesseract-OCR目录,输入命令:

 tesseract.exe number.jpg result -l eng

     其中result表示输出结果文件txt名称,eng表示用以识别的语言文件为英文。

3.  打开Tesseract-OCR目录下的result.txt文件,看到识别的结果为7542315857,有3个字符识别错误,识别率还不是很高,那有没有什么方法来提供识别率呢?Tesseract提供了一套训练样本的方法,用以生成自己所需的识别语言库。下面介绍一下具体训练样本的方法。


     


训练样本

关于如何训练样本,Tesseract-OCR官网有详细的介绍http://code.google.com/p/tesseract-ocr/wiki/TrainingTesseract3。这里通过一个简单的例子来介绍一下如何进行样本训练。

1.下载工具jTessBoxEditor. http://sourceforge.net/projects/vietocr/files/jTessBoxEditor/,这个工具是用来训练样本用的,由于该工具是用JAVA开发的,需要安装JAVA虚拟机才能运行。

2. 获取样本图像。用画图工具绘制了5张0-9的文样本图像(当然样本越多越好),如下图所示:

  

  


3.合并样本图像。运行jTessBoxEditor工具,在点击菜单栏中Tools--->Merge TIFF。在弹出的对话框中选择样本图像(按Shift选择多张),合并成num.font.exp0.tif文件。4.生成Box File文件。打开命令行,执行命令:
  tesseract.exe num.font.exp0.tif num.font.exp0 batch.nochop makebox

  生成的BOX文件为num.font.exp0.box,BOX文件为Tessercat识别出的文字和其坐标。

注:Make Box File的命令格式为:

  tesseract [lang].[fontname].exp[num].tif [lang].[fontname].exp[num] batch.nochop makebox

其中lang为语言名称,fontname为字体名称,num为序号,可以随便定义。

5.文字校正。运行jTessBoxEditor工具,打开num.font.exp0.tif文件(必须将上一步生成的.box和.tif样本文件放在同一目录),如下图所示。可以看出有些字符识别的不正确,可以通过该工具手动对每张图片中识别错误的字符进行校正。校正完成后保存即可。




6.定义字体特征文件。Tesseract-OCR3.01以上的版本在训练之前需要创建一个名称为font_properties的字体特征文件。

font_properties不含有BOM头,文件内容格式如下:

<fontname> <italic> <bold> <fixed> <serif> <fraktur>

其中fontname为字体名称,必须与[lang].[fontname].exp[num].box中的名称保持一致。<italic> 、<bold> 、<fixed> 、<serif>、 <fraktur>的取值为1或0,表示字体是否具有这些属性。

这里在样本图片所在目录下创建一个名称为font_properties的文件,用记事本打开,输入以下下内容:

font 0 0 0 0 0
这里全取值为0,表示字体不是粗体、斜体等等。

7.生成语言文件。在样本图片所在目录下创建一个批处理文件,输入如下内容。

rem 执行改批处理前先要目录下创建font_properties文件

echo Run Tesseract for Training..
tesseract.exe num.font.exp0.tif num.font.exp0 nobatch box.train

echo Compute the Character Set..
unicharset_extractor.exe num.font.exp0.box
mftraining -F font_properties -U unicharset -O num.unicharset num.font.exp0.tr

echo Clustering..
cntraining.exe num.font.exp0.tr

echo Rename Files..
rename normproto num.normproto
rename inttemp num.inttemp
rename pffmtable num.pffmtable
rename shapetable num.shapetable 

echo Create Tessdata..
combine_tessdata.exe num.

将批处理通过命令行执行。执行后的结果如下:


需确认打印结果中的Offset 1、3、4、5、13这些项不是-1。这样,一个新的语言文件就生成了。

num.traineddata便是最终生成的语言文件,将生成的num.traineddata拷贝到Tesseract-OCR-->tessdata目录下。可以用它来进行字符识别了。


使用训练后的语言库识别


用训练后的语言库识别number.jpg文件, 打开命令行,定位到Tesseract-OCR目录,输入命令:

tesseract.exe number.jpg result -l eng

识别结果如如图所示,可以看到识别率提高了不少。通过自定义训练样本,可以进行图形验证码、车牌号码识别等。感兴趣的朋友可以研究研究。



    
[3] Qt的装配
    来源: 互联网  发布时间: 2014-02-18
Qt的安装

     1. 首先安装qtcreator(qt-creator-windows-opensource-2.6.0.exe),是Qt的集成开发环境,安装后并没有Qt Gui 应用程序的选项,必须安装Qt的library,提供对创建Qt应用程序的支持。(Qt开发环境不像vs那样安装开发环境的同时提供相应的Library的支持,因此必须手动安装并配置)

     2. 安装minGW(MinGW-gcc440_1,直接解压)

[minGW的作用From Baiduzhidao:MinGW和VC一样,是一个开发环境。开发QT用MinGW是因为QT是Linux环境下的一个图形库,用来开发图形界面的应用程序,而Windows环境开发图形界面应用程序不需要QT,但是为了不大量修改源代码,就要把QT移植到Win下。(实事上,开发QT也可以用VC,不过需要用源代码重新编译QT库,开始的时候不那么方便。MinGW因为也是从Linux下移植过来了(当然在Linux下不叫MinGW),所以有相应的编译好了的QT库,直接用就可以了。]

     3. 安装qt-win-opensource-4.8.4-mingw,提供对Qt 创建的支持。安装过程中提示minGW的安装路径,选择第2步的路径,安装后将出现qt design 的可视化界面开发工具。

配置Qt开发环境:

打开Qt Creator,(1). 工具->选项->构建和运行,“QT版本”中选择“手动设置”,然后添加第3步安装的d:\Qt\4.8.2\bin\qmake.exe;

                            (2). 切换到“工具链”,选择“手动设置”,然后添加第1步安装的d:\Qt\mingw\bin\mingw32-g++.exe;

好了,现在Qt 的开发环境已经搭建完成了,写一写Qt应用程序试试吧。


    
最新技术文章:
▪Android开发之登录验证实例教程
▪Android开发之注册登录方法示例
▪Android获取手机SIM卡运营商信息的方法
▪Android实现将已发送的短信写入短信数据库的...
▪Android发送短信功能代码
▪Android根据电话号码获得联系人头像实例代码
▪Android中GPS定位的用法实例
▪Android实现退出时关闭所有Activity的方法
▪Android实现文件的分割和组装
▪Android录音应用实例教程
▪Android双击返回键退出程序的实现方法
▪Android实现侦听电池状态显示、电量及充电动...
▪Android获取当前已连接的wifi信号强度的方法
▪Android实现动态显示或隐藏密码输入框的内容
▪根据USER-AGENT判断手机类型并跳转到相应的app...
▪Android Touch事件分发过程详解
▪Android中实现为TextView添加多个可点击的文本
▪Android程序设计之AIDL实例详解
▪Android显式启动与隐式启动Activity的区别介绍
▪Android按钮单击事件的四种常用写法总结
▪Android消息处理机制Looper和Handler详解
▪Android实现Back功能代码片段总结
▪Android实用的代码片段 常用代码总结
▪Android实现弹出键盘的方法
▪Android中通过view方式获取当前Activity的屏幕截...
▪Android提高之自定义Menu(TabMenu)实现方法
▪Android提高之多方向抽屉实现方法
▪Android提高之MediaPlayer播放网络音频的实现方法...
▪Android提高之MediaPlayer播放网络视频的实现方法...
▪Android提高之手游转电视游戏的模拟操控
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3