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

📄 envyimage.h

📁 该代码用于计算波段的TVI值,该代码来源于作业程序,属于实验程序
💻 H
字号:
// EnvyImage.h: interface for the CEnvyImage class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_ENVYIMAGE_H__FAE6C234_E92E_437F_981D_C8B6AA252988__INCLUDED_)
#define AFX_ENVYIMAGE_H__FAE6C234_E92E_437F_981D_C8B6AA252988__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

struct COLORDEF {
	BYTE plus;
	BYTE r;
	BYTE g;
	BYTE b;
};
class CEnvyImage  
{
public:

	void CEnvyImage::CreateDisplaRegionGrowImage(int red, int green, int blue, int gray,CPoint piont,int nThreshold);
	int RegionGrow(LPBYTE lpImageSource,LPBYTE lpImageTarget,BITMAPINFO* bitmap,int red,int green,int blue,int band,int order,int gray,int row,int col,int saveCol,CPoint point,int nThreshold);
	void CreateDisplaSharpenImage(int red,int green,int blue,int gray);
	int Sharpen(LPBYTE lpImageSource,LPBYTE lpImageTarget,BITMAPINFO* bitmap,int red,int green,int blue,int band,int order,int gray,int row,int col,int saveCol);
	void CreateDisplaTVIImage(int red, int green, int blue, int gray);
    int CreatTVIImage(LPBYTE lpImageSource,LPBYTE lpImageTarget,BITMAPINFO* bitmap,int red,int green,int blue,int band,int order,int gray,int row,int col,int saveCol); // 用给定的裸数据创建可以显示的TVI影象;
	void GetClassColor(int* nR,int* nG,int* nB,int nClass);   // 获取各类的显示颜色
	void ChangeClassColor(int* nR,int* nG,int* nB, int nClass); // 改变各类的显示色
	int DisplatClusterImage();   // 形成聚类结果的显示图象
	BITMAPINFO* GetEmptyClusterBitInf(); // 获取聚类图象空的文件头信息头指针
	LPBYTE GetEmptyClusterImage(); // 获取空的聚类结果影象数据块
	int GetOrder(); // 获取源图象的排列次序
	int GetCol();
	int GetRow(); // 获取影象的行列数
	LPVOID GetData(); // 获取多波段影象数据指针
	int GetBand(); // 获取波段数
	void DrawImage(int srcOrgx,int srcOrgy,int srcWidth,int srcHeight,CDC* pDC,int tarOrgx,int tarOrgy,int tarWidth,int tarHeight,DWORD srccy); // 在窗口里显示影象
	void CreateDisplatImage(int red,int green,int blue,int gray); // 按不同的波段组合方式显示影象
	int  LoadImage(LPCSTR lpszPathName); // 读取影象
	CEnvyImage();
	virtual ~CEnvyImage();
protected:
	int OpenHeader(const char *lpszPathName, int &row, int &col, int &band,int &offset,int& order); // 打开头文件
	// attribute
private:
	HANDLE m_globalMemory;
	void DetachMapFile(); // 断开文件映射
	BOOL AttachMapFile(const char* strPathname, BOOL bShare); // 文件映射
	void CreatRawHeader(int nwidth,int nheight,int savewidth,int nbit,HPALETTE& hPalette,BITMAPINFO* &bitmapInfo);// 给裸数据创建影象头用于显示
	HPALETTE CreateDIBPalette(BITMAPINFO* pBitmapInfo); // 创建调色板
	int CreateImage(LPBYTE lpImageSource,LPBYTE lpImageTarget,BITMAPINFO* bitmap,int red,int green,int blue,int band,int order,int gray,int row,int col,int saveCol); // 用给定的裸数据创建可以显示的影象
	void CreateImageHeader(BITMAPINFO& bitmapInfo,int row,int col,int saveCol,int gray); // 创建影象信息头
	void Empty(); // 收回资源
	HPALETTE m_hpalette;  // 调色板
	HPALETTE m_hClusterPalette; // 显示聚类结果的调色板
	int    m_offSet;               // 影象数据相对于文件开始的字节数
	LPVOID m_lpData;               // 存储所有数据
	LPBYTE m_lpImage;              // 存储用于显示的数据
	LPBYTE m_lpClusterImage;       // 存储分类结果的影象
	BITMAPINFO* m_bitmapInfo;      // 用于显示的文件信息头
	BITMAPINFO* m_bitmapInfoCluster; // 分类结果影象信息存放
	int    m_pixelOrder;           // 影象数据存储格式
	int    m_band;                 // 波段数
	int   m_imageRow,m_imageCol;  // 图象长宽
	int   m_imageSaveCol;         // 显示影象时一行的字节数目
	int    m_gray;                 // 是否显示灰度影象
	int    m_orderRed,m_orderGreen,m_orderBlue;   // 彩色显示时候各通道对应的波段顺序
	int    m_clusterRow,m_clusterCol;   // 分类结果的长宽
	HANDLE m_hFile;                         // 文件映射时的两个参数
	HANDLE m_hMap;
	BOOL   m_displayCluster;  // 是否显示聚类影象
};

#endif // !defined(AFX_ENVYIMAGE_H__FAE6C234_E92E_437F_981D_C8B6AA252988__INCLUDED_)

⌨️ 快捷键说明

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