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

📄 ximage.h

📁 通过使机器人进行简单的图像识别
💻 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 + -