?? watershed.h
字號:
#ifndef __WATERSHED_H__
#define __WATERSHED_H__
#include "ImageCenterDib.h"
//水域變換類
class Watershed:public ImgCenterDib
{
public:
int m_nBitCountOut;//輸出圖像每像素位數
unsigned char * m_pImgDataOut;//輸出圖像位圖數據指針
LPRGBQUAD m_lpColorTableOut;//輸出圖像顏色表
int objectCount; //目標數,生長中需要標記的種類數
private:
int m_imgWidthOut;//輸出圖像的寬
int m_imgHeightOut;//輸出圖像的高
int m_nColorTableLengthOut;//輸出圖像顏色表長度
CPoint *queue[256][4];//隊列
int queueLng;//隊列緩沖區的長度
int headPointer[256][4];//隊首指針
int tailPointer[256][4];//隊尾指針
public:
Watershed();//不帶參數的構造函數
//帶參數的構造函數
Watershed(CSize size, int nBitCount, LPRGBQUAD lpColorTable,
unsigned char *pImgData);
~Watershed();//析構函數
CSize GetDimensions();//獲取輸出圖像的尺寸
//水域分割
void WatershedSegment(CPoint position[], int classCount, int contourFlg);
private:
//出隊
void Pop(int grey,int mark,CPoint* pPopPoint);
//入隊
void Push(int gray,int mark,CPoint pushPoint);
//判斷隊空
bool IsEmpty(int gray,int mark);
//判斷隊滿
bool IsOverflow(int gray,int mark);
//sobel變換
void Sobel(unsigned char *imgBuf, int width, int height, unsigned char *gradient);
//隊列初始化
void InitQueue(unsigned char* pGradient, unsigned char* pMarker, int width,int height);
//水域變換
void WatershedTrans(unsigned char* pGradient, unsigned char* pMarker, int width,int height,bool flag_contour);
//通過指定點產生標記
void GenerateMarkerByPos(unsigned char* pMarker, int width,int height,
CPoint position[], int objectCount);
};
#endif
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -