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

📄 qtcvwrapper.h

📁 一个关于snake算法的VISUAL C++的实现
💻 H
字号:
#pragma once

// Qt includes
#include <QtCore/QObject>

// forwared declarations
class MainProgram;
class MainWindow;
class Snake;
class QImage;
class QPoint;

// OpenCV includes
#ifdef _CH_
#pragma package <opencv>
#endif

#ifndef _EiC
#include "cv.h"
#include "highgui.h"
#endif

//!  The QtCvWrapper implements a wrapper between Qt GUI and OpenCV framework
/*!
 * The QtCvWrapper implements some connections between the Qt GUI and the Intel OpenCV 
 * library. Also signal and slot connections from Qt to the non-Qt part are handeled 
 * here. Most of the functions from the Snake class are initiated from this wrapper
 * when certain signals comming from the GUI.
 *
 * \param parent represents the connection to the Image-Processing part
 * \param gui holds the pointer to the GUI
 *
 */
class QtCvWrapper : public QObject
{
	Q_OBJECT;

public:
	//! constructs the wrapper between Qt and OpenCV
	QtCvWrapper(MainProgram* parent, MainWindow* gui);
	//! destructor
	~QtCvWrapper(void);

	//! indicates if the iteration is schown or not
	inline bool iterate(){return m_iterate;};
	//! indicates if the iteration is schown or not
	inline bool step(){return m_step;};

public slots:
	//! slot is called when a new image is opened to synchronize the IplImage
	void slotImageOpened();
	//! when the snake buttin is hit the algorithm should start
	void slotSnakeButtonPressed();
	//! just does a small demo with a simple ellipse in the image
	void slotTest();
	//! does initialisation of the initial snake
	void slotInitCurve();
	//! iteration visualisation is turned on
	void slotIterationOn();
	//! iteration visualisation is turned off
	void slotIterationOff();
	//! iteration visualisation is turned on with user interaction
	void slotIterationStep();


private:
	//! a simple test image with an ellipse is created
	void createTestImage(CvPoint center, CvSize axes, CvScalar color, CvScalar background);

	//! converts an ipl image to a qimage (hopefully)
	void convertImage(IplImage* src, QImage* dst);

	//! creates an ellipse with the initialized upper left and lower right boundingbox vertices
	CvPoint* createEllipse(QPoint ulPt, QPoint lrPt, int numSegments);

	MainProgram* m_parent; //! parent that created the wrapper
	MainWindow* m_gui;   //! pointer to the actual gui
	Snake*    m_snake;   //! m_snake is used for applying the snake algorithm to m_iplImg
	IplImage* m_iplImg;  //! the actual shown and processed image

	bool m_iterate;      //! switches iterations on/off
	bool m_step;         //! does stepwise iterations

};

⌨️ 快捷键说明

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