亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? segimage.h

?? matlab一些常用的處理模塊
?? H
字號:
/****************************************************************************** * 光學字符識別程序 * 文件名:segimage.h * 功能  :圖像分割定義文件 * modified by PRTsinghua@hotmail.com******************************************************************************/#ifndef SEGIMAGE_H#define SEGIMAGE_H#include <iostream>#include <vector>#include <qimage.h> #include "common.h"#include "common_gfx.h"using std::ostream;class Segimage{private:	enum	{		max_segment		= 7,		// 一個字符最大允許的分割數		vector_def_reserve 	= 10	// 對每個分段的缺省備用空間	};public:	struct point; 			typedef list< point * > cs_sequence;	typedef vector< vector< qlist< point > > > border_lists;	typedef bool ( Segimage::* HandlePixelCallback)(int, int, void * );	struct  cs_sequence_start	{		bool 		is_start;		cs_sequence	*sequence;		bool get_straight_line( float &x1, float &y1, float &x2, float &y2 );	};		struct singularpoint	{		float	x;		float	y;		int 	pix_count;		list< cs_sequence_start > cs_sequences;	};	struct point	{		point( int init_x = 0, int init_y = 0 ) : x( init_x ), y( init_y ), ang( 0 ), dang( 0 ), length( -1 ), 			processed( false ), singular_point( NULL ), num_ending( 0 ), oang( 0 ), good_smoothed( false ) {};		void set_opposite( ringlist_iterator< point > opp );		friend inline bool operator==( const point &p1, const point &p2 );		friend inline bool operator!=( const point &p1, const point &p2 );		int	x;		int	y;		float	ang;		float	dang;		float	length;		// 到相反點的長度		bool	processed;		ringlist_iterator< point > opp;		singularpoint *singular_point;		int	num_ending;				float	oang;			// 原始角度		bool	good_smoothed;	// 平滑的效果	};	#pragma pack(1)	struct pixel	{		bool		is_border	:1;		bool		is_filled	:1;		// 填充標識用來進行孤立點檢測		unsigned int	segment		:max_segment;		unsigned int	processed	:max_segment;		// 僅當 ( is_border == true ) 時有效		list< ringlist_iterator< point > >	border_points;		list< point * >				start_points;				friend inline bool operator==( const pixel &p1, const pixel &p2 );		friend inline bool operator!=( const pixel &p1, const pixel &p2 );	};	#pragma pack()	enum direction { down, right, up, left };		Segimage( int x, int y );	Segimage( const CharImage& img );		int detect_segments();	void get_border_lists( border_lists &l );	void fill_region( Segimage::point *sp );	bool take_over_segment( int x, int y, Segimage::singularpoint &sp );	void undo_take_over_segment( int x, int y );	void lineBresenham( int x0, int y0, int x1, int y1 );	void intersect_cs( Segimage::point &p );	ringlist_iterator< point > &find_opposite( const Segimage::point &p );	double avg_line_thickness();	pixel &get_pixel( int x, int y);	bool set_pixel( int x, int y, int segment);	void print( int mark_x, int mark_y);	inline void get_bounding_box( int &x_min, int &x_max, int &y_min, int &y_max ) const 		{ x_min = min_x; x_max = max_x; y_min = min_y; y_max = max_y; }private:	struct opposite_data 	{		bool	first;		int	ax;		int 	ay;		int 	ex;		int 	ey;	};	struct intersect_data 	{		int 	ax;		int 	ay;		point	*p;	};	void lineBresenham( int x0, int y0, int x1, int y1, HandlePixelCallback cb, void *cb_data );	void lineBresenham( int x0, int y0, float angle, HandlePixelCallback cb, void *cb_data );	bool draw_pixel( int x0, int y0, void * ) { return set_pixel( x0, y0, 9 ); };	bool find_opposite_pixel( int x0, int y0, void *cb_data );	bool intersect_pixel( int x0, int y0, void *cb_data );	void set_segment(int x, int y, unsigned int &segbits );	void fill(int x, int y, pixel &p, int segnr );	void fill_singular_region( int x, int y, Segimage::point *sp );	void set_processed( int x, int y );	bool draw_singular_pixel( int x0, int y0, void *p );	void clear();		float 	cs_total_length;	int 	cs_number;	int 	min_x, min_y, max_x, max_y;	int 	size_x, size_y;	pixel	outer_pixel;	vector< vector<pixel> > seg_img;};inline bool operator==( const Segimage::pixel &p1, const Segimage::pixel &p2 ){	return p1.is_border == p2.is_border && p1.segment == p2.segment && p1.processed == p2.processed;}inline bool operator!=( const Segimage::pixel &p1, const Segimage::pixel &p2 ){	return !(p1==p2);}inline bool operator==( const Segimage::point &p1, const Segimage::point &p2 ){	return p1.x == p2.x && p1.y == p2.y;}inline bool operator!=( const Segimage::point &p1, const Segimage::point &p2 ){	return !(p1==p2);}inline Segimage::direction operator++( Segimage::direction &d ){	if( d == Segimage::left )		return ( d = Segimage::down );	else		return ( d = static_cast< Segimage::direction >( static_cast< int >( d ) + 1 ) );}inline Segimage::direction operator--( Segimage::direction &d ){	if( d == Segimage::down )		return ( d = Segimage::left );	else		return ( d = static_cast< Segimage::direction >( static_cast< int >( d ) - 1 ) );}inline Segimage::direction leftof( Segimage::direction d ){	return ++d;}inline Segimage::pixel &Segimage::get_pixel( int x, int y ){	if( x < 0 || x >= size_x || y < 0 || y >= size_y )		return outer_pixel;	else		return seg_img[x][y];}inline bool Segimage::set_pixel( int x, int y, int segment ){	if( x < 0 || x >= size_x || y < 0 || y >= size_y )		return false;		seg_img[x][y].is_border = false;	seg_img[x][y].segment = segment;	seg_img[x][y].processed = 0;		return true;}inline void Segimage::set_segment( int x, int y, unsigned int &segbits ){	pixel &p = get_pixel(x,y);		if( !p.is_border && p.segment > 1 )		segbits = segbits | ( 1 << ( p.segment - 2 ) );}inline ostream& operator<< ( ostream& o, Segimage::direction d ){	switch( d )	{		case Segimage::down:		o << "down"; break;		case Segimage::right:		o << "right"; break;		case Segimage::up:		o << "up"; break;		case Segimage::left:		o << "left"; break;		default:			o << "undefined";	}		return o;}class SegWalker: public Walker{public:	SegWalker( Segimage *image ) : img( image ) {}	void walk_border( int start_x, int start_y, int seg, qlist<Segimage::point> *l );private:	virtual bool is_border_pixel( int x, int y ) const { return img->get_pixel( x, y ).is_border; }	virtual bool is_good_walker_start( int x, int y ) const;	virtual void walker_process( int x, int y );	unsigned int segment;	qlist<Segimage::point> *list;	Segimage *img;};#endif

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
午夜精品视频在线观看| 成人ar影院免费观看视频| 国产精品综合av一区二区国产馆| 成人高清视频在线观看| 在线电影欧美成精品| 国产精品免费丝袜| 久久不见久久见免费视频7| 一本一道综合狠狠老| 久久久亚洲精品石原莉奈| 视频一区国产视频| 色悠悠亚洲一区二区| 国产午夜一区二区三区| 奇米777欧美一区二区| 在线观看亚洲精品视频| 国产欧美日韩精品a在线观看| 七七婷婷婷婷精品国产| 欧美在线小视频| 最新日韩在线视频| 国产馆精品极品| 欧美精品一区二区三区蜜桃 | 亚洲日本va在线观看| 美国av一区二区| 91精品国产综合久久精品性色| 亚洲图片激情小说| hitomi一区二区三区精品| 久久精品视频在线免费观看| 日本女人一区二区三区| 88在线观看91蜜桃国自产| 亚洲图片激情小说| 色婷婷综合在线| 亚洲精品一二三四区| 成人午夜视频免费看| 中日韩免费视频中文字幕| 成人毛片视频在线观看| 中文字幕欧美日韩一区| 成人网在线播放| 国产精品成人一区二区三区夜夜夜| 狠狠狠色丁香婷婷综合激情| www久久精品| 国产麻豆成人精品| 国产日韩欧美综合一区| 成人av电影在线网| 亚洲视频一区在线| 欧洲日韩一区二区三区| 亚洲 欧美综合在线网络| 欧美日韩国产综合久久| 美女一区二区在线观看| 精品国产一区二区三区忘忧草 | 成人v精品蜜桃久久一区| 国产午夜精品久久久久久久| 夫妻av一区二区| 亚洲免费在线看| 欧美午夜精品一区| 九九视频精品免费| 欧美国产禁国产网站cc| 99久久精品99国产精品| 亚洲成人免费观看| 日韩精品一区二区三区老鸭窝| 国内精品久久久久影院薰衣草 | 精品久久久久99| 豆国产96在线|亚洲| 亚洲美女少妇撒尿| 6080日韩午夜伦伦午夜伦| 韩国女主播成人在线| 国产精品久久午夜夜伦鲁鲁| 欧美视频精品在线| 久久66热偷产精品| 国产精品国产精品国产专区不片| 欧美日韩国产一二三| 国产精品18久久久久久久久久久久 | 国产在线精品一区二区三区不卡 | av在线一区二区三区| 无码av中文一区二区三区桃花岛| 日韩视频免费观看高清完整版 | 一区二区在线观看免费视频播放 | 麻豆精品精品国产自在97香蕉 | 久久久亚洲精品石原莉奈| 一本久久综合亚洲鲁鲁五月天 | 欧美揉bbbbb揉bbbbb| 国产一区999| 亚洲综合一区二区精品导航| 亚洲精品一区二区三区精华液| 91国偷自产一区二区开放时间 | 天天操天天干天天综合网| 国产欧美精品一区| 欧美一卡二卡三卡| 日本电影欧美片| 国产成a人无v码亚洲福利| 亚洲成人免费在线| 亚洲丝袜另类动漫二区| 久久影院电视剧免费观看| 欧美色图激情小说| 99久久精品国产一区二区三区| 久久国产精品一区二区| 亚洲图片一区二区| 亚洲图片激情小说| 欧美国产精品v| 久久久精品免费免费| 欧美大片在线观看一区| 在线播放中文字幕一区| 在线亚洲人成电影网站色www| 国产精品一卡二| 久久国产福利国产秒拍| 日韩黄色免费电影| 亚洲18色成人| 亚洲高清不卡在线| 亚洲国产婷婷综合在线精品| 亚洲人成网站精品片在线观看| 国产精品理论片在线观看| 久久亚洲捆绑美女| 欧美zozo另类异族| 日韩欧美一区二区视频| 日韩一区二区三区三四区视频在线观看 | 亚洲激情第一区| 亚洲精品视频观看| 亚洲影视资源网| 亚洲成人av一区二区三区| 亚洲一区二区三区四区不卡| 一区二区不卡在线播放 | 欧美精选在线播放| 欧美一级片在线看| 日韩一级免费观看| 日韩精品一区二区三区老鸭窝| 欧美一区二区观看视频| 欧美大片免费久久精品三p| 欧美xingq一区二区| 久久综合久久综合久久| 久久久久99精品国产片| 国产精品成人网| 亚洲精品中文在线观看| 亚洲国产人成综合网站| 免费一级片91| 国产精品香蕉一区二区三区| 91在线看国产| 91精品国产综合久久久久久久久久 | 欧美艳星brazzers| 欧美一区二区不卡视频| 国产午夜精品久久久久久久| 国产欧美日韩卡一| 亚洲午夜久久久久久久久电影网| 欧美aaa在线| 国产成人亚洲精品狼色在线| 99久久99久久精品免费观看| 欧美日韩一区三区| 26uuu久久天堂性欧美| 一色桃子久久精品亚洲| 亚洲h动漫在线| 国产一区美女在线| 日本高清不卡视频| 久久尤物电影视频在线观看| 亚洲三级理论片| 蜜芽一区二区三区| 不卡电影一区二区三区| 欧美精品vⅰdeose4hd| 久久久青草青青国产亚洲免观| 亚洲免费视频成人| 国内精品在线播放| 色狠狠桃花综合| 国产亚洲成av人在线观看导航| 亚洲精品欧美专区| 精彩视频一区二区三区| 在线视频一区二区三| 久久九九全国免费| 午夜久久福利影院| www.日韩精品| 精品国产制服丝袜高跟| 亚洲一级在线观看| 国产成人一区在线| 欧美一区日本一区韩国一区| 亚洲精品国产精品乱码不99 | 精品久久一区二区三区| 亚洲日本青草视频在线怡红院| 精品一区二区影视| 欧美日韩中文精品| 亚洲色图制服丝袜| 国产乱理伦片在线观看夜一区| 精品视频在线视频| 亚洲欧洲99久久| 国产一区在线不卡| 欧美成人aa大片| 午夜精品久久久久久久久久久 | 欧美一二三区在线| 亚洲综合小说图片| 色综合天天综合在线视频| 国产农村妇女毛片精品久久麻豆 | 国产精品午夜电影| 国产高清视频一区| 精品久久人人做人人爰| 美女视频网站黄色亚洲| 欧美日韩成人综合天天影院| 亚洲精品菠萝久久久久久久| 北岛玲一区二区三区四区| 久久精品亚洲精品国产欧美kt∨| 久久99热这里只有精品| 91精品国产综合久久福利 | 一区二区三区中文字幕| 99久久免费国产| 椎名由奈av一区二区三区| 97精品久久久久中文字幕| 国产精品国产三级国产专播品爱网|