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

📄 snake.h

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

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

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

// forwared declarations
class QtCvWrapper;

//!  The snake class implements the snake algorithm
/*!
 * The snake class implements the snake algorithm from the OpenCV library.
 * cvSnakeImage is called within an iteration until the maximum number of 
 * iteration is reached or the error reaches a certain minimum.
 *
 * \param parent is just the connection to the application that makes use of the Snake class
 * \param inImg represents the initial image for Snake segmentation
 *
 * \todo more detailed constructors to set paramaters at creation time
 * \todo alpha, beta and gamma could be vectors -> make it configurable
 */
class Snake
{
public:
	//! constructor of the snake class
	Snake(QtCvWrapper* parent, IplImage* inImg);

	//! destructor
	virtual ~Snake(void);

	//! sets the input image for the snake algorithm
	inline bool setInImg(IplImage* inImg){m_inImg = inImg;};

	//! returns the actual input image for snake algorithm
	inline IplImage* getInImg(){return m_inImg;};

	//! returns actual snake image
	inline IplImage* getSnakeImage(){return m_snakeImg;};

	//! initializes a first version of the curve
	void initSnakeCurve();

	//! initialize a special snake curve
	void initSnakeCurve(CvPoint* pt);

	//! tries to approximate the contour curve with numIterations
	IplImage* iterateSnakeCurve(int numIterations, bool showIterations);
	
protected:

private:
	//! parent that sets connection to the "outside"
	QtCvWrapper* m_parent;  
	IplImage* m_inImg;      //! input Image
	IplImage* m_snakeImg;   //! image with the snake included
	CvTermCriteria m_crit;  //! stopping criteria
	CvPoint* m_snakeCurve;  //! curve that represents the snake

	// some constants
	float m_alpha; //! Weight of continuity energy, single float or array of length floats, one per each contour point.
	float m_beta;  //! Weight of curvature energy, similar to alpha.
	float m_gamma; //! Weight of image energy, similar to alpha.
	CvSize m_winSize;   //! Size of neighborhood of every point used to search the minimum (use odd numbers!)
	int m_numSegments;  //! number of segments the snake curve is divided
	int m_numIteration; //! number of iterations the snake algorithm tries to fit the object
};

#endif

⌨️ 快捷键说明

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