void QOpenCV::FaceRecognitionWindow::closeEvent( QCloseEvent* event )
{

	qDebug() << "ARWindow closeEvent";

	// stop send images from threads
	mNoVideo->setChecked( true );
	onSelModulChange();

	disconnect();  // disconnect unnecessary connection, while dialog is hidden(disabling sending image to window)

	event->accept();
}
Example #2
0
void QOpenCV::OpenCVWindow::configureWindow()
{
	setModal( false );
	setWindowTitle( tr( "Kinect and Aruco Window" ) );

	mWindowLabel = new QLabel( "", this, 0 );

	mKinectRB = new QRadioButton( tr( "Kinect" ) );
	mArucoRB = new QRadioButton( tr( "Aruco" ) );
	mFaceRecRB = new QRadioButton( tr( "Face Recognition" ) );
	mMarkerRB = new QRadioButton( tr( "Marker" ) );
	mMultiMarkerRB = new QRadioButton( tr( "Multi Marker" ) );

	mFaceRecPB = new QPushButton( tr( "Start Face Recognition" ) );
	mMarkerPB = new QPushButton( tr( "Start Marker Detection" ) );
	mMultiMarkerPB = new QPushButton( tr( "Start MultiMarker" ) );
	mKinectPB = new QPushButton( tr( "Start Kinect" ) );
	mKinectSnapshotPB = new QPushButton( tr( "Kinect Snapshot" ) );
	mUpdateCorParPB	= new QPushButton( tr( "Update cor. param." ) );
	mInterchangeMarkersPB = new QPushButton( tr( "Change Markers" ) );

	mNoVideo = new QCheckBox( tr( "NoVideo" ) );
	mMarkerBackgrCB	= new QCheckBox( tr( "Background" ) );
	mFaceDetBackgrCB = new QCheckBox( tr( "Background" ) );
	mMarkerBehindCB	= new QCheckBox( tr( "Marker is behind" ) );
	mCorEnabledCB = new QCheckBox( tr( "Correction" ) );
	mDisableCursorCB = new QCheckBox( tr( "Turn off cursor" ) );
	mDisableZoomCursorCB = new QCheckBox( tr( "Turn off zoom" ) );
	mEnableMarkerDetectCB = new QCheckBox( tr( "Turn on Marker Detection" ) );

	mSpeed =  new QSlider( Qt::Vertical );
	mSpeed->setRange( 5,20 );
	mSpeed->setValue( 10 );
	mSpeed->setPageStep( 1 );
	mSpeed->setFocusPolicy( Qt::NoFocus );
	mSpeed->setToolTip( "Modify speed of movement" );

	mModulesStackL = new QStackedLayout;
	mSubmodulesStackL = new QStackedLayout;

	QHBoxLayout* mainLayout		= new QHBoxLayout;
	QVBoxLayout* buttonLayout	= new QVBoxLayout;

#ifdef OPENNI2_FOUND
	mKinectRB->setChecked( true );
	buttonLayout->addWidget( mKinectRB );
#endif

	buttonLayout->addWidget( mArucoRB );
	buttonLayout->addLayout( mModulesStackL );

	QWidget* kinectPageWid =  new QWidget;
	QWidget* arucoPageWid =  new QWidget;
	QWidget* arucoFaceRecPageWid = new QWidget;
	QWidget* arucoMarkerPageWid = new QWidget;
	QWidget* arucoMultiMarkerPageWid = new QWidget;
	QWidget* arucoSubPageWid = new QWidget;

	QVBoxLayout*	kinectPageLayout	= new QVBoxLayout;
	QVBoxLayout*	arucoPageLayout	= new QVBoxLayout;
	QVBoxLayout* arucoFaceRecPageLayout = new QVBoxLayout;
	QVBoxLayout* arucoMarkerPageLayout = new QVBoxLayout;
	QVBoxLayout* arucoMultiMarkerPageLayout = new QVBoxLayout;
	QVBoxLayout* arucoSubPageLayout = new QVBoxLayout;

	mFaceRecRB->setChecked( true );
	arucoSubPageLayout->addWidget( mFaceRecRB );
	arucoSubPageLayout->addWidget( mMarkerRB );
	//arucoSubPageLayout->addWidget( mMultiMarkerRB );
	arucoSubPageLayout->addWidget( mNoVideo );
	arucoSubPageLayout->addLayout( mSubmodulesStackL );

	kinectPageLayout->setAlignment( Qt::AlignBottom );
	arucoPageLayout->setAlignment( Qt::AlignBottom );
	arucoFaceRecPageLayout->setAlignment( Qt::AlignBottom );
	arucoMarkerPageLayout->setAlignment( Qt::AlignBottom );
	arucoMultiMarkerPageLayout->setAlignment( Qt::AlignBottom );

	mModulesStackL->addWidget( kinectPageWid );
	mModulesStackL->addWidget( arucoSubPageWid );

	mSubmodulesStackL->addWidget( arucoFaceRecPageWid );
	mSubmodulesStackL->addWidget( arucoMarkerPageWid );
	//mSubmodulesStackL->addWidget( arucoMultiMarkerPageWid );

	kinectPageWid->setLayout( kinectPageLayout );
	arucoPageWid->setLayout( arucoPageLayout );
	arucoFaceRecPageWid->setLayout( arucoFaceRecPageLayout );
	arucoMarkerPageWid->setLayout( arucoMarkerPageLayout );
	arucoMultiMarkerPageWid->setLayout( arucoMultiMarkerPageLayout );
	arucoSubPageWid->setLayout( arucoSubPageLayout );

	//set up page layouts
	kinectPageLayout->addWidget( mDisableCursorCB );
	kinectPageLayout->addWidget( mDisableZoomCursorCB );
	kinectPageLayout->addWidget( mEnableMarkerDetectCB );
	kinectPageLayout->addWidget( mSpeed );
	kinectPageLayout->addWidget( mKinectSnapshotPB );
	kinectPageLayout->addWidget( mKinectPB );

	//arucoPageLayout->addWidget( mMultiMarkerPB );

	arucoFaceRecPageLayout->addWidget( mFaceDetBackgrCB );
	arucoFaceRecPageLayout->addWidget( mFaceRecPB );

	arucoMarkerPageLayout->addWidget( mMarkerBackgrCB );
	arucoMarkerPageLayout->addWidget( mMarkerBehindCB );
	arucoMarkerPageLayout->addWidget( mCorEnabledCB );
	arucoMarkerPageLayout->addWidget( mUpdateCorParPB );
	arucoMarkerPageLayout->addWidget( mInterchangeMarkersPB );
	arucoMarkerPageLayout->addWidget( mMarkerPB );

	//arucoMultiMarkerPageLayout->addWidget( mMultiMarkerPB );

	if ( Util::ApplicationConfig::get()->getValue( "Viewer.SkyBox.Noise" ).toInt() < 2 ) {
		mMarkerBackgrCB->setDisabled( true );
	}

	//set layout
	mainLayout->addLayout( buttonLayout );
	mainLayout->addWidget( mWindowLabel, Qt::AlignCenter );
	mainLayout->setSizeConstraint( QLayout::SetMinimumSize );
	setLayout( mainLayout );
	adjustSize();

	//set up Widgets
	mUpdateCorParPB->setEnabled( false );

	mFaceDetBackgrCB->setEnabled( false );
	mMarkerBackgrCB->setEnabled( false );
	mMarkerBehindCB->setEnabled( false );
	mCorEnabledCB->setEnabled( false );
	mEnableMarkerDetectCB->setEnabled( true );

	mMultiMarkerPB->setCheckable( true );
	mFaceRecPB->setCheckable( true );
	mMarkerPB->setCheckable( true );
	mKinectPB->setCheckable( true );

	//set up signals to slots
	connect( mKinectRB, SIGNAL( clicked() ), this, SLOT( onSelModulChange() ) );
	connect( mArucoRB, SIGNAL( clicked() ), this, SLOT( onSelModulChange() ) );
	connect( mFaceRecRB, SIGNAL( clicked() ), this, SLOT( onSelSubModulChange() ) );
	connect( mMarkerRB, SIGNAL( clicked() ), this, SLOT( onSelSubModulChange() ) );
	connect( mMultiMarkerRB, SIGNAL( clicked() ), this, SLOT( onSelSubModulChange() ) );

	connect( mNoVideo,	 SIGNAL( clicked() ), this, SLOT( onSelSubModulChange() ) );

	connect( mUpdateCorParPB, SIGNAL( clicked() ), this, SLOT( onUpdateCorPar() ) );
	connect( mMarkerPB,  SIGNAL( clicked( bool ) ), this, SLOT( onMarkerStartCancel( bool ) ) );
	connect( mFaceRecPB, SIGNAL( clicked( bool ) ), this, SLOT( onFaceRecStartCancel( bool ) ) );
	connect( mMultiMarkerPB, SIGNAL( clicked( bool ) ), this, SLOT( onMultiMarkerStartCancel( bool ) ) );
	connect( mKinectPB, SIGNAL( clicked( bool ) ), this, SLOT( onKinectStartCancel( bool ) ) );
	connect( mKinectSnapshotPB, SIGNAL( clicked() ), this, SLOT( onKinectSnapshotPBClicked() ) );

	connect( mMarkerBackgrCB, SIGNAL( clicked( bool ) ), this, SLOT( onMarkerBackgrCBClicked( bool ) ) );
	connect( mFaceDetBackgrCB, SIGNAL( clicked( bool ) ), this, SLOT( onFaceDetBackgrCBClicked( bool ) ) );
	connect( mEnableMarkerDetectCB, SIGNAL( clicked( bool ) ), this, SLOT( setMarkerDetection( bool ) ) );

	connect( mDisableCursorCB, SIGNAL( clicked() ), this, SLOT( stopMovingCursor() ) );
	connect( mDisableZoomCursorCB, SIGNAL( clicked( bool ) ), this, SLOT( stopZoom() ) );

}
void QOpenCV::FaceRecognitionWindow::configureWindow()
{
	setModal( false );
	setWindowTitle( tr( "Face Recognition and Marker Detection" ) );

	mWindowLabel			= new QLabel( "", this, 0 );
	mFaceRecRB				= new QRadioButton( tr( "Face recognition" ) );
	mMarkerRB				= new QRadioButton( tr( "Marker detection" ) );
	mMultiMarkerRB			= new QRadioButton( tr( "MultiMarker recognition" ) );
	mNoVideo				= new QCheckBox( tr( "NoVideo" ) );
	mModulesStackL			= new QStackedLayout;
	mFaceRecStartCancelPB	= new QPushButton( tr( "Start FaceRec" ) );
	mMarkerStartCancelPB	= new QPushButton( tr( "Start Marker" ) );
	//Garaj start
	mMultiMarkerStartCancelPB = new QPushButton( tr( "Start MultiMarker" ) );
	//Garaj end

	mMarkerBackgrCB			= new QCheckBox( tr( "Background" ) );
	mFaceDetBackgrCB		= new QCheckBox( tr( "Background" ) );

	mMarkerBehindCB			= new QCheckBox( tr( "Marker is behind" ) );
	mCorEnabledCB			= new QCheckBox( tr( "Correction" ) );
	mUpdateCorParPB			= new QPushButton( tr( "Update cor. param." ) );
	mInterchangeMarkersPB	= new QPushButton( tr( "Change Markers" ) );



	QHBoxLayout* mainLayout		= new QHBoxLayout;
	QVBoxLayout* buttonLayout	= new QVBoxLayout;

	mFaceRecRB->setChecked( true );
	buttonLayout->addWidget( mFaceRecRB );
	buttonLayout->addWidget( mMarkerRB );
	buttonLayout->addWidget( mMultiMarkerRB );
	buttonLayout->addWidget( mNoVideo );
	buttonLayout->addLayout( mModulesStackL );


	// face detection and marker controll buttons
	QWidget*		faceRecPageWid		= new QWidget;
	QWidget*		markerPageWid		= new QWidget;
	QWidget*		multimarkerPageWid = new QWidget;

	QVBoxLayout*	faceRecPageLayout	= new QVBoxLayout;
	QVBoxLayout*	markerPageLayout	= new QVBoxLayout;
	QVBoxLayout* multimarkerPageLayout = new QVBoxLayout;

	faceRecPageLayout->setAlignment( Qt::AlignBottom );
	markerPageLayout->setAlignment( Qt::AlignBottom );
	multimarkerPageLayout->setAlignment( Qt::AlignBottom );

	mModulesStackL->addWidget( faceRecPageWid );
	mModulesStackL->addWidget( markerPageWid );
	mModulesStackL->addWidget( multimarkerPageWid );

	faceRecPageWid->setLayout( faceRecPageLayout );
	markerPageWid->setLayout( markerPageLayout );
	multimarkerPageWid->setLayout( multimarkerPageLayout );

	faceRecPageLayout->addWidget( mFaceDetBackgrCB );
	faceRecPageLayout->addWidget( mFaceRecStartCancelPB );

	markerPageLayout->addWidget( mMarkerBackgrCB );
	markerPageLayout->addWidget( mMarkerBehindCB );
	markerPageLayout->addWidget( mCorEnabledCB );
	markerPageLayout->addWidget( mUpdateCorParPB );
	markerPageLayout->addWidget( mInterchangeMarkersPB );

	markerPageLayout->addWidget( mMarkerStartCancelPB );

	multimarkerPageLayout->addWidget( mMultiMarkerStartCancelPB );


	if ( Util::ApplicationConfig::get()->getValue( "Viewer.SkyBox.Noise" ).toInt() < 2 ) {
		mMarkerBackgrCB->setDisabled( true );
	}




	// set layout
	mainLayout->addLayout( buttonLayout );
	mainLayout->addWidget( mWindowLabel, Qt::AlignCenter );
	mainLayout->setSizeConstraint( QLayout::SetMinimumSize );
	setLayout( mainLayout );
	adjustSize();

	// this could be changed
	mFaceDetBackgrCB->setEnabled( false );
	mMarkerBackgrCB->setEnabled( false );
	mFaceDetBackgrCB->setChecked( false );
	mMarkerBackgrCB->setChecked( false );
	mFaceRecStartCancelPB->setCheckable( true );
	mMarkerStartCancelPB->setCheckable( true );
	mMultiMarkerStartCancelPB->setCheckable( true );
	mMarkerBehindCB->setEnabled( false );
	mCorEnabledCB->setEnabled( false );
	mUpdateCorParPB->setEnabled( false );

	// connections on private slots
	connect( mFaceRecRB, SIGNAL( clicked() ), this, SLOT( onSelModulChange() ) );
	connect( mMarkerRB,	 SIGNAL( clicked() ), this, SLOT( onSelModulChange() ) );
	connect( mMultiMarkerRB, SIGNAL( clicked() ), this, SLOT( onSelModulChange() ) );
	connect( mNoVideo,	 SIGNAL( clicked() ), this, SLOT( onSelModulChange() ) );

	connect( mUpdateCorParPB, SIGNAL( clicked() ), this, SLOT( onUpdateCorPar() ) );
	connect( mMarkerStartCancelPB,  SIGNAL( clicked( bool ) ), this, SLOT( onMarkerStartCancel( bool ) ) );
	connect( mFaceRecStartCancelPB, SIGNAL( clicked( bool ) ), this, SLOT( onFaceRecStartCancel( bool ) ) );
	connect( mMultiMarkerStartCancelPB, SIGNAL( clicked( bool ) ), this, SLOT( onMultiMarkerStartCancel( bool ) ) );

	connect( mMarkerBackgrCB, SIGNAL( clicked( bool ) ), this, SLOT( onMarkerBackgrCBClicked( bool ) ) );
	connect( mFaceDetBackgrCB, SIGNAL( clicked( bool ) ), this, SLOT( onFaceDetBackgrCBClicked( bool ) ) );

}