64 lines
1.7 KiB
C++
64 lines
1.7 KiB
C++
|
|
|
|
// SDirection.h: interface for the CSDirection class.
|
|
//
|
|
//////////////////////////////////////////////////////////////////////
|
|
|
|
#if !defined(AFX_SDIRECTION_H__C672AFF1_1A65_11D6_B99E_0040F674BE6A__INCLUDED_)
|
|
#define AFX_SDIRECTION_H__C672AFF1_1A65_11D6_B99E_0040F674BE6A__INCLUDED_
|
|
|
|
#if _MSC_VER > 1000
|
|
#pragma once
|
|
#endif // _MSC_VER > 1000
|
|
|
|
#include "SDef.h"
|
|
|
|
#include <vector>
|
|
|
|
using namespace std;
|
|
|
|
//#define MSIZE 3
|
|
|
|
typedef struct {
|
|
char val;
|
|
UCHAR dir;
|
|
} SVD;
|
|
|
|
#define NBDIR 4
|
|
|
|
class CSDirection
|
|
{
|
|
int m_lX, m_lY;
|
|
UCHAR *m_dir;
|
|
SXYW *m_df[NBDIR];
|
|
int m_lDf;
|
|
|
|
void null();
|
|
void makeDir(UCHAR *sel);
|
|
UCHAR getDir(const int xx, const int yy, UCHAR *sel);
|
|
void makeDirFilter(const int sens);
|
|
UCHAR equalizeDir_GTE50(UCHAR *sel, const int xx, const int yy, const int d);
|
|
UCHAR equalizeDir_LT50(UCHAR *sel, const int xx, const int yy, const int d);
|
|
void equalizeDir(UCHAR *sel, const int d);
|
|
double adjustAngle(const short sum[4], const int Ima,
|
|
const int Im45, const int Ip45);
|
|
double getAngle(const short sum[4], short ma);
|
|
UCHAR blurRadius(UCHAR *sel, const int xx, const int yy, const int dBlur);
|
|
void blurRadius(const int dBlur);
|
|
void setDir01();
|
|
bool isContourBorder(const int xx, const int yy, const int border);
|
|
void setContourBorder(const int border);
|
|
|
|
public:
|
|
CSDirection();
|
|
CSDirection(const int lX, const int lY, const UCHAR *sel, const int sens);
|
|
CSDirection(const int lX, const int lY, const UCHAR *sel, const int sens, const int border);
|
|
virtual ~CSDirection();
|
|
|
|
void doDir();
|
|
void doRadius(const double rH, const double rLR,
|
|
const double rV, const double rRL, const int dBlur);
|
|
void getResult(UCHAR *sel);
|
|
};
|
|
|
|
#endif // !defined(AFX_SDIRECTION_H__C672AFF1_1A65_11D6_B99E_0040F674BE6A__INCLUDED_)
|