⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 kognition.cpp

📁 vc++数字图像识别技术典型案例
💻 CPP
📖 第 1 页 / 共 2 页
字号:
	slotStatusMsg(i18n("Opening file..."));	if(!doc->saveModified())	{	}	else	{		KURL url=KFileDialog::getOpenURL(		CurrentDir,		i18n("*|All files"), this, i18n("Open File..."));		if(!url.isEmpty())		{			CurrentDir=url.path();			doc->openDocument(url);			setCaption(url.fileName(), false);			fileOpenRecent->addURL( url );		}	}	slotStatusMsg(i18n("Ready."));}void KognitionApp::slotFileCreateNewDatabase(){	slotStatusMsg(i18n("Create new database from image ..."));	if(!doc->saveModified())	{	}	else	{		KURL url=KFileDialog::getOpenURL(QString::null,		i18n("*|All files"), this, i18n("Open image for new database definition ..."));		if(!url.isEmpty())		{			char_db.clear();			bool ok;			QString str=KLineEditDlg::getText( QString( i18n("Characters to define:") ), CharDBString, &ok, this );			if( ok )			{				doc->openDocument(url,str);				setCaption(url.fileName(), false);				fileOpenRecent->addURL( url );			}		}	}	slotStatusMsg(i18n("Ready."));}void KognitionApp::slotFileAppendToDatabase(){	slotStatusMsg(i18n("Append character data from image to database ..."));	if(!doc->saveModified())	{	}	else	{			KURL url=KFileDialog::getOpenURL(QString::null,		i18n("*|All files"), this, i18n("Open image for integration into database ..."));		if(!url.isEmpty())		{			bool ok;			QString str=KLineEditDlg::getText( QString( i18n("Characters to define:") ), CharDBString, &ok, this );			if( ok )			{				doc->openDocument(url,str);				setCaption(url.fileName(), false);				fileOpenRecent->addURL( url );			}		}	}	slotStatusMsg(i18n("Ready."));}void KognitionApp::slotFileSaveDatabaseAs(){	slotStatusMsg(i18n("Save database As ..."));	QString db_file = KFileDialog::getSaveFileName(QString::null,	      i18n("*|All files"), this, i18n("Save database As ..."));	if(!db_file.isEmpty())		char_db.write(db_file);	slotStatusMsg(i18n("Ready."));}void KognitionApp::slotEditReplaceChar(){	doc->img->replace_char();}void KognitionApp::slotEditVariantChar(){	doc->img->append_variant_char();}void KognitionApp::slotFileOpenRecent(const KURL& url){	slotStatusMsg(i18n("Opening file..."));	if(!doc->saveModified())	{	}	else	{		doc->openDocument(url);		setCaption(url.fileName(), false);	}	slotStatusMsg(i18n("Ready."));}void KognitionApp::slotFileSave(){	slotStatusMsg(i18n("Saving file..."));	doc->saveDocument(doc->URL());	slotStatusMsg(i18n("Ready."));}void KognitionApp::slotFileSaveAs(){	slotStatusMsg(i18n("Saving file with a new filename..."));	KURL url=KFileDialog::getSaveURL(QDir::currentDirPath(),				i18n("*|All files"), this, i18n("Save as..."));	if(!url.isEmpty())	{		doc->saveDocument(url);		fileOpenRecent->addURL(url);		setCaption(url.fileName(),doc->isModified());	}	slotStatusMsg(i18n("Ready."));}void KognitionApp::slotFileClose(){	slotStatusMsg(i18n("Closing file..."));	close();	slotStatusMsg(i18n("Ready."));}void KognitionApp::slotFilePrint(){	slotStatusMsg(i18n("Printing..."));	QPrinter printer;	if (printer.setup(this))	{	}	slotStatusMsg(i18n("Ready."));}void KognitionApp::slotFileQuit(){	slotFileClose();}void KognitionApp::slotEditCut(){	slotStatusMsg(i18n("Cutting selection..."));	slotStatusMsg(i18n("Ready."));}void KognitionApp::slotEditCopy(){	slotStatusMsg(i18n("Copying selection to clipboard..."));	slotStatusMsg(i18n("Ready."));}void KognitionApp::slotEditPaste(){	slotStatusMsg(i18n("Inserting clipboard contents..."));	slotStatusMsg(i18n("Ready."));}void KognitionApp::slotViewToolBar(){	slotStatusMsg(i18n("Toggling toolbar..."));	if(!viewToolBar->isChecked())		toolBar("mainToolBar")->hide();	else		toolBar("mainToolBar")->show();	slotStatusMsg(i18n("Ready."));}void KognitionApp::slotViewStatusBar(){	slotStatusMsg(i18n("Toggle the statusbar..."));	if(!viewStatusBar->isChecked())		statusBar()->hide();	else		statusBar()->show();	slotStatusMsg(i18n("Ready."));}void KognitionApp::slotStatusMsg(const QString &text){	statusBar()->clear();	statusBar()->changeItem(text, ID_STATUS_MSG);}void KognitionApp::slotDebugImage(){	bool show = debugImage->isChecked();		if ( show )		doc->img->show();	else		doc->img->hide();	debugBorderLists->setEnabled( show );	debugBorderAngles->setEnabled( show );	debugCrossSections->setEnabled( show );	debugSingularRegions->setEnabled( show );	debugSkeleton->setEnabled( show );	debugDirections->setEnabled( show );	debugPolySkeleton->setEnabled( show );	debugAbstractChar->setEnabled( show );	debugMatchingState->setEnabled( show );	debugGrid->setEnabled( show );	debugBorderAnglesSmooth->setEnabled( show );	debugGuessedLines->setEnabled( show );}void KognitionApp::slotDebugHistogram(){	if( debugHistogram->isChecked() )		doc->hist->show();	else		doc->hist->hide();}void KognitionApp::slotDebugBorderLists(){	doc->img->set_draw_flag(Image::draw_border_lists, debugBorderLists->isChecked());}void KognitionApp::slotDebugBorderAngles(){	doc->img->set_draw_flag(Image::draw_border_angles, debugBorderAngles->isChecked());}void KognitionApp::slotDebugCrossSections(){	doc->img->set_draw_flag(Image::draw_cross_sections, debugCrossSections->isChecked());}void KognitionApp::slotDebugSingularRegions(){	doc->img->set_draw_flag(Image::draw_singular_regions, debugSingularRegions->isChecked());}void KognitionApp::slotDebugSkeleton(){	doc->img->set_draw_flag(Image::draw_skeleton, debugSkeleton->isChecked());}void KognitionApp::slotDebugDirections(){	doc->img->set_draw_flag(Image::draw_directions, debugDirections->isChecked());}void KognitionApp::slotDebugPolySkeleton(){	doc->img->set_draw_flag(Image::draw_polygon_skeleton, debugPolySkeleton->isChecked());}void KognitionApp::slotDebugAbstractChar(){	doc->img->set_draw_flag(Image::draw_abstract_char, debugAbstractChar->isChecked());}void KognitionApp::slotDebugMatchingState(){	doc->img->set_draw_flag(Image::draw_abstract_matching, debugMatchingState->isChecked());}void KognitionApp::slotDebugGrid(){	doc->img->set_draw_flag(Image::draw_grid, debugGrid->isChecked());}void KognitionApp::slotDebugBW(){	doc->set_draw_flag(Page::draw_bw, debugBW->isChecked());	doc->img->set_draw_flag(Image::draw_bw, debugBW->isChecked());}void KognitionApp::slotDebugBorderAnglesSmooth(){	doc->img->set_draw_flag(Image::draw_border_angles_smooth, debugBorderAnglesSmooth->isChecked());}void KognitionApp::slotDebugGuessedLines(){	doc->img->set_draw_flag(Image::draw_guessed_lines, debugGuessedLines->isChecked());}void KognitionApp::slotDebugBoundingboxes(){	doc->set_draw_flag(Page::draw_boundingboxes, debugBoundingboxes->isChecked());}void KognitionApp::slotDebugMetaboxes(){	doc->set_draw_flag(Page::draw_metaboxes, debugMetaboxes->isChecked());}void KognitionApp::slotDebugBaseline(){	doc->set_draw_flag(Page::draw_baseline, debugBaseline->isChecked());}void KognitionApp::slotDebugBasepoints(){	doc->set_draw_flag(Page::draw_basepoints, debugBasepoints->isChecked());}void KognitionApp::slotDebugMaxPart(){	doc->set_draw_flag(Page::draw_maxpart, debugMaxPart->isChecked());}void KognitionApp::keyPressEvent(QKeyEvent *e){	switch (e->key())	{	case Key_PageDown:	doc->img->next_border_list(false);	// 显示上一个边界列表				break;	case Key_PageUp:	doc->img->next_border_list(true);	// 显示下一个边界列表				break;	case Key_Less:		doc->img->change_line_thickness(false);	// 让线条瘦一点				doc->change_line_thickness(false);				break;	case Key_Greater:	doc->img->change_line_thickness(true);	// 让线条粗一点				doc->change_line_thickness(true);				break;	case Key_Asterisk:	switch ( static_cast<int>( doc->getScale( false ) ) ) 				{					case -1: 	doc->setScale( -2 );	// 切换到宽度自动匹配							break;					case -2:	doc->setScale( -3 );	// 切换到高度自动匹配							break;					case -3:	doc->setScale( -4 );	// 切换到比例因子1							break;					case -4:	doc->setScale( -1 );	// 切换到高度宽度自动调整							break;					default:	doc->setScale( -1 );	// 同上				}				break;	case Key_Plus:		{					// 放大				float scale = doc->getScale();				scale = scale < 1 ? 1 / ( 1 / scale - 1 ) : scale + 1;				doc->setScale( scale );							break;				}	case Key_Minus:		{					// 缩小				float scale = doc->getScale();						scale = scale <= 1 ? 1 / ( 1 / scale + 1 ) : scale - 1;				doc->setScale( scale );							break;				}	case Key_Left:		doc->setXPos( qRound(doc->getXPos() - 50 * doc->getScale()) );	// 左移页				break;	case Key_Right:		doc->setXPos( qRound(doc->getXPos() + 50 * doc->getScale()) );	// 右移页				break;	case Key_Up:		doc->setYPos( qRound(doc->getYPos() - 50 * doc->getScale()) );	// 上移页				break;	case Key_Down:		doc->setYPos( qRound(doc->getYPos() + 50 * doc->getScale()) );	// 下移页				break;	case Key_Print:		doc->makeSnapshot();				// 当前页的快照				break;	case Key_Comma:		doc->img->mark_next_cs( false );	// 标记上一个cs				break;	case Key_Period:	doc->img->mark_next_cs( true );		// 标记下一个cs				break;	default:		e->ignore(); 	}}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -