Jump to Navigation

C++

C/C++编程

初步尝试opencv图像识别训练

在了解了一些关于opencv的功能与基本用法之后,开学尝试使用opencv做一些实际应用。
本次选定一个功能应用,识别验证码功能。
验证码用于网站的防伪,一般为大小写字母与数字,4-6个字符不等。

使用opencv识别,分解为以下步骤,
验证码图片的切割,把图片中的几个字符拆开成单独的字符图片。
使用拆开的字符图片执行opencv训练,
使用训练好的分类器文件,识别目标中的字符。

对于图片验证码的切割,又分为下面几个步骤,
图像去噪,去除图像的背景,混淆随机点/线
图像的加强或者平滑处理,让其中的字符更清楚
根据字符轮廓,切割出字符图片。

这一步中,对于稍微复杂的验证码,也非常难以做到,
例如在去噪的时候,会把字符线条也去掉了部分,对于比较细的字体,可能就被过滤掉了。
对于有比较粗的混淆线时,这种线一般与字符交叉重叠,
在计算字符的轮廓时,会出现两个字符粘连一在起的情况。
图片加强时,也会加强没有去掉的混淆点/线,影响识别字符轮廓
还有些字符距离可能由于倾斜或者字体大小不同而靠的非常近,

ARM处理器支持的数据宽度

ARM 处理器支持6种数据类型;

8位有符号和无符号字节。 (char, unsigned char)

16位有符号和无符号半字,它们以2字节的边界对准。(short int, unsigned short int)

32位有符号和无符号字,它们以4字节的边界对准。(int, unsigned int)

ARM指令全是以32bit的字并且必须是字对准的。

Thumb指令是半字而且必以两字节的边界对准的。

#include
#include

Category:

GCC 4.8 发布,提升 C++11 的支持

GCC 4.8 正式版发布!!!该版本包括通用的优化、新语言以及语言规范提升,提升 G++ 对 C++11 的支持,改进新的 ISO C++ 标准库、C++11 的支持,支持更多平台,详情请看发行说明
GCCGNU Compiler CollectionGNU编译器套装),是一套由 GNU 开发的编程语言编译器。它是一套以 GPL 及 LGPL 许可证所发行的自由软件,也是 GNU计划 的关键部分,亦是自由的 类Unix 及苹果计算机 Mac OS X 操作系统的标准编译器。GCC(特别是其中的C语言编译器)也常被认为是跨平台编译器的事实标准。

Category:

C11的内建线程支持

C语言走过30年,依旧在不停发展进步。

语言级内建线程支持是C11语言标准引入的新特性之一。

C11内建线程头文件在c11/threading.h

C11内建线程包括mutex锁的实现,临界资源的应用,

mtx_init

mtx_destroy

mtx_lock

mtx_unlock

tss_create

tss_set

tss_get

thrd_current

C11内建线程与linux pthread的比较

Category:

gcc与clang内置原子操作函数研究

原子操作在实现多线程并发操作时非常重要的功能。

在现有的线程库中,一般通过提供锁的功能实现线程的互斥与同步。

但是锁的粒度比较大,在性能要求非常高的软件中可能会受限制。

原子操作函数则能在最小粒度上实现并发的互斥与同步,很多的无锁数据结构(lock-free data structure)库皆使用这些函数实现的。

不同的编译器提供的原子操作函数不相同,但总结下来,也就几种模式,包括:

*)原子加、减并返回操作结果,或者返回当前值后再加、减

*)原子与、或、异或并返回操作结果,或者返回当前值后再与、或、异或

*) test and set类功能,测试标识并设置相应的值

*) exchange/swap类功能,比较并交换值

*)

目前最新版本的gcc、clang的原子操作实现均符合c++11定义的原子操作6种内存模型:

Category:

使用clang编译完全支持C++11的Qt5

总结,通过这次折腾,

加深了对clang/llvm编译工具链的理解。

了解了些关于gcc与clang的内建原子操作机制与实现。

了解了clang当前3.2版本的一些问题。

了解了clang/llvm后续版本的一些新特性。

Qt5关于C++11的配置编译变量设置机制。

Qt5跨平台配置编译的实现机制。

软件包版本说明:

clang/llvm-3.2

libcxx-3.2

libcxxabi-svn-20130223

qt5.0.1

archlinux/kernel3.8.0/x86_64

参考资料:

Category:

karia2近期一点想法

karia2是一个开源的基于Qt4的命令行下载工具aria2的GUI 跨平台下载管理器项目。
aria2c是一个支持许多协议,支持多线程下载的命令行工具。

aria2c这个项目一直非常活跃,最近有点时间,看了一点源代码,发源其工程提供编译出来一个libaria2c.a的库,然后考虑是否能以嵌入方式与karia2界面整合成一个整体。
经一点测试,发现这种方式确实可以正常调用aria2c的下载功能。
因此对些做一些完善工作,从原来的xmlrpc模式修改为直接调用aria2c核心类的方式实现下载功能,以及其他的控制功能与状态监控功能。
目前已经出来一个可用版本,但还不够完善,需要不断完善。

另外,aria2c又提供了json-rpc和websocket-rpc功能,希望有时间的话,能通过比较好的设计模式,实现其提供的所有通信方式,最终打造一个像样的aria2c界面交互下载软件。

现在的代码在github.com提供一份,会定期的同步到sourceforge.net的svn中。
最新代码地址:
https://github.com/kitech/karia2

Category:

CURL 错误码 中文翻译

这几天用CURL做下载系统,经常会遇到一些问题,很多的错误还是和CURL的option有关。现在把这些错误码贴过来,方便查看一下。

Category:

图片搜索/匹配PHASH实现改进

phash是一个图片特征抽取算法实现,
该算法相对还比较简单,特征值只是一个64位无符号整数。
在使用PHP扩展程序处理的时候,原版本的扩展只返回资源类型的值,
只能实时做对比处理,无法把它存储起来。

通过阅读它的PHP扩展,发现修改一下代码即能把资源转变为整数返回,
添加一个扩展函数,PHP_FUNCTION(phash_toint);
参数为使用phash_imagehash返回的资源类型值,
实现函数为,
PHP_FUNCTION(phash_toint)
{
zval * h1_res = NULL;
int h1_resid = -1;
ulong64 * h1;
zval * h2_res = NULL;
int h2_resid = -1;
ulong64 * h2;

Category:

自己动手制作VC++2012绿色版

绿色版本需求:不需要安装即可使用,干净不带IDE,不带其他语言C#、F#开发工具,不带SqlServer相关开发工具,不带.NET4 SDK,
整个包较原版安装包小,支持编译调试版本的程序,支持x86、x64、以及x86交叉编译x64应用程序。

制作环境:
Windows 7 ultimate x64位 中文版本。
VS2011安装在默认的C:\Program Files (x86)\Microsoft Visual Studio 11.0\目录。
绿化环境在Z:\VC2012\目录。

1. 到MicroSoft官方网站下载 MicroSoft Visual Studio 2012 retail 30天试用版本,安装时选择只安装VC++工具,
包括x64开发包,但不包括IA64开发包。
测试运行无误,准备完毕。这原版VC++2012战用磁盘5.5G左右。

Category:

页面

订阅 RSS - C++


Main menu 2

by Dr. Radut