采用zinnia手写识别引擎,掌握zinnia 引擎接口,使用Qt编译zinnia的源代码。
参考原帖:http://www.qtprogrammer.org/?p=43#more-43
代码片段和文件信息
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 4891 2009-04-05 19:40 zinniacharacter.cpp
文件 48880 2011-03-10 17:09 zinniacharacter.o
文件 3420 2011-03-10 12:29 zinniacommon.h
文件 3087 2011-02-23 09:56 zinniaconfig.h
文件 5103 2009-04-05 19:40 zinniafeature.cpp
文件 1382 2009-04-05 19:40 zinniafeature.h
文件 35456 2011-03-10 17:09 zinniafeature.o
文件 1464 2009-04-05 19:40 zinniafreelist.h
文件 26834816 2009-06-22 08:27 zinniahandwriting-zh_CN.model
文件 11679 2009-04-05 19:40 zinnialibzinnia.cpp
文件 58904 2011-03-10 17:09 zinnialibzinnia.o
文件 441 2011-03-10 16:21 zinniamain.cpp
文件 7356 2011-03-10 17:09 zinniamain.o
文件 10869 2011-03-10 17:08 zinniaMakefile
文件 5012 2009-04-05 19:40 zinniammap.h
文件 2615 2011-03-10 17:09 zinniamoc_QHWR.cpp
文件 12076 2011-03-10 17:09 zinniamoc_QHWR.o
文件 5932 2009-04-05 19:40 zinniaparam.cpp
文件 2387 2009-04-05 19:40 zinniaparam.h
文件 40128 2011-03-10 17:09 zinniaparam.o
文件 7112 2011-03-10 17:06 zinniaQHWR.cpp
文件 1732 2011-03-10 16:03 zinniaQHWR.h
文件 33848 2011-03-10 17:09 zinniaQHWR.o
文件 4921 2010-05-09 13:34 zinnia
ecognizer.cpp
文件 46892 2011-03-10 17:09 zinnia
ecognizer.o
文件 1830 2009-04-05 19:40 zinniascoped_ptr.h
文件 3350 2009-04-05 19:40 zinniasexp.cpp
文件 1978 2009-04-05 19:40 zinniasexp.h
文件 7464 2011-03-10 17:09 zinniasexp.o
文件 1398 2009-04-05 19:40 zinniastream_wrapper.h
............此处省略13个文件信息
//
// Zinnia: Online hand recognition system with machine learning
//
// $Id: character.cpp 17 2009-04-05 11:40:32Z taku-ku $;
//
// Copyright(C) 2008 Taku Kudo
//
#include
#include
#include
#include
#include
#include
#include “common.h“
#include “zinnia.h“
#include “sexp.h“
#include “scoped_ptr.h“
namespace zinnia {
class CharacterImpl: public Character {
public:
void set_value(const char *str) {
value_.assign(str std::strlen(str));
}
void set_value(const char *str size_t length) {
value_.assign(str length);
}
const char *value() const {
return value_.c_str();
}
void set_width(size_t width) {
width_ = width;
}
void set_height(size_t height) {
height_ = height;
}
size_t width() const { return width_; }
size_t height() const { return height_; }
void clear() { strokes_.clear(); }
bool add(size_t id int x int y);
size_t strokes_size() const {
return strokes_.size();
}
size_t stroke_size(size_t id) const {
return (strokes_.size() <= id) ?
static_cast(-1) : strokes_[id].size();
}
int x(size_t id size_t i) const {
return (id >= strokes_.size() || i >= strokes_[id].size()) ?
-1 : strokes_[id][i].x;
}
int y(size_t id size_t i) const {
return (id >= strokes_.size() || i >= strokes_[id].size()) ?
-1 : strokes_[id][i].y;
}
bool parse(const char *str size_t length);
bool parse(const char *str) {
return parse(str std::strlen(str));
}
bool toString(char *buf size_t length) const;
const char *what() { return what_.str(); }
CharacterImpl(): width_(300) height_(300) {}
virtual ~CharacterImpl() { clear(); }
private:
struct Dot {
int x;
int y;
};
std::vector > strokes_;
std::string value_;
size_t width_;
size_t height_;
whatlog what_;
scoped_ptr sexp_;
};
bool CharacterImpl::add(size_t id int x int y) {
strokes_.resize(id + 1);
Dot d;
d.x = x;
d.y = y;
strokes_[id].push_back(d);
return true;
}
// parse S-expression
// (character
// (value A)
// (width 100)
// (height 100)
// (strokes ( (0 1) (1 2) ) ( (0 1) (1 2) ) ) )
bool CharacterImpl::parse(const char *str size_t length) {
clear();
if (!sexp_.get()) {
sexp_.reset(new Sexp);
}
sexp_->free();
char *begin = const_cast(str);
const char *end = str + length;
const Sexp::Cell *root_cell = sexp_->read(&begin end);
if (!root_cell) {
sexp_->free();
return false;
}
const Sexp::Cell *ccel = root_cell->car();
if (!ccel->is_atom() || std::strcmp(“character“ ccel->atom()) != 0) {
sexp_->free();
return false;
}
for (const Sexp::Cell *it = root_cell->cdr(); it; it = it->cdr()) {
const Sexp::Cell *cell= it->car();
if (cell->car() && cell->car()->is_atom() &&
cell->cdr() && cell->cdr()->car() &&
cell->cdr()->car()->is_atom()) {
const char *
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 4891 2009-04-05 19:40 zinniacharacter.cpp
文件 48880 2011-03-10 17:09 zinniacharacter.o
文件 3420 2011-03-10 12:29 zinniacommon.h
文件 3087 2011-02-23 09:56 zinniaconfig.h
文件 5103 2009-04-05 19:40 zinniafeature.cpp
文件 1382 2009-04-05 19:40 zinniafeature.h
文件 35456 2011-03-10 17:09 zinniafeature.o
文件 1464 2009-04-05 19:40 zinniafreelist.h
文件 26834816 2009-06-22 08:27 zinniahandwriting-zh_CN.model
文件 11679 2009-04-05 19:40 zinnialibzinnia.cpp
文件 58904 2011-03-10 17:09 zinnialibzinnia.o
文件 441 2011-03-10 16:21 zinniamain.cpp
文件 7356 2011-03-10 17:09 zinniamain.o
文件 10869 2011-03-10 17:08 zinniaMakefile
文件 5012 2009-04-05 19:40 zinniammap.h
文件 2615 2011-03-10 17:09 zinniamoc_QHWR.cpp
文件 12076 2011-03-10 17:09 zinniamoc_QHWR.o
文件 5932 2009-04-05 19:40 zinniaparam.cpp
文件 2387 2009-04-05 19:40 zinniaparam.h
文件 40128 2011-03-10 17:09 zinniaparam.o
文件 7112 2011-03-10 17:06 zinniaQHWR.cpp
文件 1732 2011-03-10 16:03 zinniaQHWR.h
文件 33848 2011-03-10 17:09 zinniaQHWR.o
文件 4921 2010-05-09 13:34 zinnia
ecognizer.cpp
文件 46892 2011-03-10 17:09 zinnia
ecognizer.o
文件 1830 2009-04-05 19:40 zinniascoped_ptr.h
文件 3350 2009-04-05 19:40 zinniasexp.cpp
文件 1978 2009-04-05 19:40 zinniasexp.h
文件 7464 2011-03-10 17:09 zinniasexp.o
文件 1398 2009-04-05 19:40 zinniastream_wrapper.h
............此处省略13个文件信息
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。
评论列表(条)