📄 ximage.h
字号:
/********************************************************************
*
* =-----------------------------------------------------------------=
* = ____ _________ =
* = / _ \ \___ __/ =
* = / /_/ / ____ / / =
* = / _ \ ● / _ \ / / =
* = / /_/ // // / / // / =
* = \______//_//_/ /_//_/ =
* = =
* = Copyright (c) BIN Technology studio,2004 =
* = LET'Z BT =
* =-----------------------------------------------------------------=
*
* FileName : XImage.h XImage.cpp
* Description : 颜色切分原型
*
* Author : 风间苍月(TuQbasic)
* Email : tuqbasic@sohu.com
*
* Create : 2004.03.15
* LastChange : 2004.05.03
*
* History :
********************************************************************/
// 图像切分处理
#pragma once
#include "Engine\hGraphic2D.h"
#include "ImageBuffer.h"
#include "AreaIndex.h"
class CXImage
{
public:
CXImage(void);
virtual ~CXImage(void);
// 初始化(分配空间和计算查找表)
// 参数:图像的宽和高,以及分割所需参数,b555Mode指定颜色位数
bool InitIncise(unsigned int width, unsigned int height, SHSVRGB::INCISECOLOR clr, bool b555Mode= false);
// 释放空间
void EndIncise(void);
// 颜色切分
void InciseImage(LPI_DXSURFACE ps);
void InciseImage(const BITMAPINFOHEADER * const pBMPHdr);
void InciseImageASM(const BITMAPINFOHEADER * const pBMPHdr);
// 开运算
void OperatorOpen(void);
// 闭运算
void OperatorClose(void);
// 将二值图像转换为DS图像
void ConvertOutDS(LPI_DXSURFACE ps);
void ConvertOutDSASM(LPI_DXSURFACE ps);
// 获取缓冲
CImageBuffer<unsigned char> *GetImageBuffer(CImageBuffer<unsigned char> *pDst);
CImageBuffer<unsigned char> *GetImageBufferASM(CImageBuffer<unsigned char> *pDst);
CImageBuffer<unsigned char> *GetImageBuffer(void) { return m_pArea;}
private:
CXImage& operator = (const CXImage& r) { return *this;}
protected:
// 消除边界(置0)
void ClearBorder(CImageBuffer<unsigned char>* pSrc);
void ClearBorderASM(CImageBuffer<unsigned char>* pSrc);
// 膨胀
void Dilation(CImageBuffer<unsigned char>* pSrc, CImageBuffer<unsigned char>* pDest);
void DilationASM(CImageBuffer<unsigned char>* pSrc, CImageBuffer<unsigned char>* pDest);
// 腐蚀
void Erosion(CImageBuffer<unsigned char>* pSrc, CImageBuffer<unsigned char>* pDest);
void ErosionASM(CImageBuffer<unsigned char>* pSrc, CImageBuffer<unsigned char>* pDest);
protected:
bool m_b555Mode; // 颜色位数选项
CAreaIndex *m_pAreaIndex; // 区域查找表
CAreaIndex555 *m_pAreaIndex555;
CImageBuffer<unsigned char> *m_pArea; // 颜色区域标志
CImageBuffer<unsigned char> *m_pAreaBuf; // 膨胀收缩需要的缓冲?
};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -