Dart类
个人博客:http://www.milovetingting.cn
类Dart 是支持基于 mixin 继承机制的面向对象语言,所有对象都是一个类的实例,而除了 Null 以外的所有的类都继承自 Object 类。 基于 mixin 的继承 意味着尽管每个类(top class Object? 除外)都只有一个超类,一个类的代码可以在其它多个类继承中重复使用。 扩展方法 是一种在不更改类或创建子类的情况下向类添加功能的方式。
使用类的成员对象的 成员 由函数和数据(即 方法 和 实例变量)组成。方法的 调用 要通过对象来完成,这种方式可以访问对象的函数和数据。
使用(.)来访问对象的实例变量或方法:
1234567var p = Point(2, 2);// Get the value of y.assert(p.y == 2);// Invoke distanceTo() on p.double distance = p.distanceTo(Point(4, 4));
使用 ?. 代替 . 可以避免因为左边表达式为 null 而导致的问题:
12// If p is non- ...
Dart异常
个人博客:http://www.milovetingting.cn
异常Dart 代码可以抛出和捕获异常。异常表示一些未知的错误情况,如果异常没有捕获则会被抛出从而导致抛出异常的代码终止执行。
与 Java 不同的是,Dart 的所有异常都是非必检异常,方法不必声明会抛出哪些异常,并且你也不必捕获任何异常。
Dart 提供了 Exception 和 Error 两种类型的异常以及它们一系列的子类,你也可以定义自己的异常类型。但是在 Dart 中可以将任何非 null 对象作为异常抛出而不局限于 Exception 或 Error 类型
抛出异常下面是关于抛出或者 引发 异常的示例:
1throw FormatException('Expected at least 1 section');
你也可以抛出任意的对象:
1throw 'Out of llamas!';
优秀的代码通常会抛出 Error 或 Exception 类型的异常。
因为抛出异常是一个表达式,所以可以在 => 语句中使用,也可以在其他使用表达式的地方 ...
Dart流程控制语句
个人博客:http://www.milovetingting.cn
流程控制语句你可以使用下面的语句来控制 Dart 代码的执行流程:
if 和 else
for 循环
while 和 do-while 循环
break 和 continue
switch 和 case
assert
使用 try-catch 和 throw 也能影响控制流,详情参考异常部分。
If 和 ElseDart 支持 if - else 语句,其中 else 是可选的,比如下面的例子。你也可以参考条件表达式。
1234567if (isRaining()) { you.bringRainCoat();} else if (isSnowing()) { you.wearJacket();} else { car.putTopDown();}
Dart 的 if 语句中的条件必须是布尔值而不能为其它类型。详情请查阅 布尔值。
For 循环你可以使用标准的 for 循环进行迭代。例如:
1234var message = StringBuf ...
Dart运算符
个人博客:http://www.milovetingting.cn
运算符Dart 支持下表的操作符。
描述
运算符
一元后缀
*表达式*++ *表达式*-- () [] . ?. !
一元前缀
-*表达式* !*表达式* ~*表达式* ++*表达式* --*表达式*
乘除法
* / % ~/
加减法
+ -
位运算
<< >> >>>
二进制与
&
二进制异或
^
二进制或
`
关系和类型测试
>= > <= < as is is!
相等判断
== !=
逻辑与
&&
逻辑或
`
空判断
??
条件表达式
*表达式 1* ? *表达式 2* : *表达式 3*
级联
.. ?..
赋值
= *= /= += -= &= ^= 等等……
一旦你使用了运算符,就创建了表达式。下面是一些运算符表达式的示例:
123456a++a + ba = ba == bc ? a : ba is T
在运算符 ...
Dart函数
个人博客:http://www.milovetingting.cn
函数Dart 是一种面向对象的语言,所以即便函数也是对象并且类型为Function。函数可以被赋值给变量或者作为其它函数的参数。也可以像调用函数一样调用 Dart 类的实例。
123bool isNoble(int atomicNumber) { return _nobleGases[atomicNumber] != null;}
函数可以没有返回值
123isNoble(atomicNumber) { return _nobleGases[atomicNumber] != null;}
如果函数体内只包含一个表达式,可以使用简写语法:
1bool isNoble(int atomicNumber) => _nobleGases[atomicNumber] != null;
语法 => *表达式* 是 { return *表达式*; } 的简写, => 有时也称之为 箭头 函数。在 => 与 ; 之间的只能是 ...
Dart内置类型
个人博客:http://www.milovetingting.cn
内置类型
Number
String
Boolean
List
Set
Map
Rune
Symbol
Null
Numberint
整数值;长度不超过 64 位,在 DartVM 上其取值位于 -263 至 263 - 1 之间。在 Web 上,整型数值代表着 JavaScript 的数字(64 位无小数浮点型),其允许的取值范围在 -253 至 253 - 1 之间。
double
64 位的双精度浮点数字,且符合 IEEE 754 标准。
下面是字符串和数字之间转换的方式:
123456789101112131415// String -> intvar one = int.parse('1');assert(one == 1);// String -> doublevar onePointOne = double.parse('1.1');assert(onePointOne == 1.1);// int -> StringString o ...
Dart重要概念及变量
个人博客:http://www.milovetingting.cn
Dart概览参考文档:https://dart.cn/guides/language/language-tour
重要概念1、所有变量引用的都是 对象,每个对象都是一个 类 的实例。数字、函数以及 null 都是对象。除去 null 以外(如果你开启了 空安全), 所有的类都继承于 Object 类。
2、尽管 Dart 是强类型语言,但是在声明变量时指定类型是可选的,因为 Dart 可以进行类型推断。
3、如果开启了 空安全,变量在未声明为可空类型时不能为 null。你可以通过在类型后加上问号 (?) 将类型声明为可空。
4、如果 明确知道 一个表达式不会为空,但 Dart 不这么认为时,可以在表达式后添加 ! 来断言表达式不为空(为空时将抛出异常)。
5、如果想要显式地声明允许任意类型,使用 Object?(如果你 开启了空安全)、 Object 或者 特殊类型 dynamic 将检查延迟到运行时进行。
6、Dart 支持泛型,比如 List<int>(表示一组由 int 对象组成的列表)或 Lis ...
Dart环境搭建
个人博客:http://www.milovetingting.cn
Dart-SDK 下载以Windows系统为例。
进入官网下载地址:https://dart.dev/get-dart ,按照上面的步骤进行
也可以下载压缩包后安装。这里通过下载压缩包安装,压缩包下载地址:https://dart.dev/get-dart/archive
下载回来后,解压压缩包。
配置环境变量将解压后的SDK目录加入到环境变量,新增DART_SDK
再将DART_SDK加入PATH中
Win+R,然后输入cmd,在打开的命令行窗口中输入dart --version,如果显示以下界面,则表示配置成功。
Visual Studio Code配置在扩展中搜索dart并安装
在扩展中搜索code runner并安装
新建目录,然后在目录中新建dart文件,编写代码,点击run运行
VsCode配置完成。
Mac编译OpenCV
个人博客
http://www.milovetingting.cn
前言简单记录Mac下编译OpenCV,以便后续查看。
使用HomeBrew安装cmake1brew install cmake
获取OpenCV源代码官网地址:https://opencv.org/releases/
选择Sources下载
编译OpenCV
解压文件,在解压后的目录中创建一个临时目录,名称不限,如build,在终端中执行
1mkdir build
进入创建的目录
1cd build
配置
1cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local ..
编译
1make -j8
指定并行8个线程
安装
1make install
安装好 OpenCV 后,在 /usr/local/lib 下能看到opencv相关的lib库
Clion项目使用OpenCV
Clion新建一个项目
配置CMakeLists.txt的内容
123456789101112cma ...
Tesseract-OCR样本训练
个人博客
http://www.milovetingting.cn
下载Tesseract1https://github.com/UB-Mannheim/tesseract/wiki
下载jTessBoxEditor1https://sourceforge.net/projects/vietocr/files/jTessBoxEditor/jTessBoxEditor-2.3.1.zip/download
安装Tesseract一路Next,在选择组件界面,全选所有组件
安装jTessBoxEditor解压后,直接运行jTessBoxEditor.jar
制作训练样本运行jTessBoxEditor工具,点击Tools-Merge TIFF,选择需要合并的tif文件,保存文件名称格式:[lang].[fontname].exp[num],如zh.song.exp0
生成Box文件进入Tesseract安装目录
1tesseract [lang].[fontname].exp[num].tif [lang].[fontname].exp[num] batch.nochop mak ...