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

📄 pixelprocessor.h

📁 本人有关PLC测试源码
💻 H
📖 第 1 页 / 共 3 页
字号:
class FCPixelLens : public FCPixelBilinearDistord
{
public:
    FCPixelLens (double fRefraction, BOOL bKeepBk) : m_fRefraction(FMax(1.0,fRefraction)), m_bKeepBk(bKeepBk) {}
    virtual void OnEnterProcess (FCObjImage* pImg, RECT& rcImg) ;
protected:
    virtual BOOL  calc_undistorted_coord (int x, int y, double & un_x, double & un_y) const ;
protected:
    double      m_fRefraction ; // 必须大于1.0
    BOOL        m_bKeepBk ;
} ;
//=============================================================================
// 错切变形/skew transform (>=24 bit)
class FCPixelSkew : public FCPixelBilinearDistord
{
public:
    FCPixelSkew (const POINT ptPos[4]) ;
    virtual void OnEnterProcess (FCObjImage* pImg, RECT& rcImg) ;
protected:
    virtual BOOL  calc_undistorted_coord (int x, int y, double & un_x, double & un_y) const ;
protected:
    POINT       m_ptNewPos[4] ; // LT, RT, RB, LB
    int         m_nNewWidth ;
    int         m_nNewHeight ;
} ;
//=============================================================================
// 透镜变形/perspective transform (>=24 bit)
class FCPixelPerspective : public FCPixelBilinearDistord
{
public:
    FCPixelPerspective (const POINT ptPos[4]) ;
    virtual void OnEnterProcess (FCObjImage* pImg, RECT& rcImg) ;
protected:
    virtual BOOL  calc_undistorted_coord (int x, int y, double & un_x, double & un_y) const ;
protected:
    POINT       m_ptNewPos[4] ; // LT, RT, RB, LB
    int         m_nNewWidth ;
    int         m_nNewHeight ;
} ;
//=============================================================================
// 旋转/rotate image (>=24 bit)
class FCPixelRotate : public FCPixelBilinearDistord
{
public:
    FCPixelRotate (int nAngle) ;
    virtual void OnEnterProcess (FCObjImage* pImg, RECT& rcImg) ;
protected:
    virtual BOOL  calc_undistorted_coord (int x, int y, double & un_x, double & un_y) const ;
protected:
    double   m_fAngle, m_fInvAngle ;
    int      m_nNewWidth, m_nNewHeight ;
} ;
//=============================================================================
// 带形/ribbon (>=24 bit)
class FCPixelRibbon : public FCPixelBilinearDistord
{
public:
    // nSwing : 振幅[0..100],此值为一百分比
    // nFrequency : 频率>=0,每10为一个pi
    FCPixelRibbon (int nSwing, int nFrequency) ;
    virtual void OnEnterProcess (FCObjImage* pImg, RECT& rcImg) ;
protected:
    virtual BOOL  calc_undistorted_coord (int x, int y, double & un_x, double & un_y) const ;
protected:
    int               m_nSwing, m_nFreq ;
    int               m_nDelta ;
    std::deque<int>   m_ShiftDown ;
} ;
//=============================================================================
// 波纹/ripple (>=24 bit)
class FCPixelRipple : public FCPixelBilinearDistord
{
public:
    FCPixelRipple (int nWavelength, int nAmplitude, BOOL bSinType = TRUE) ;
protected:
    virtual BOOL  calc_undistorted_coord (int x, int y, double & un_x, double & un_y) const ;
private:
    double  shift_amount (int nPos) const ;
private:
    int     m_nWavelength ;
    int     m_nAmplitude ;
    BOOL    m_bSinType ;
} ;
//=============================================================================
// tile (>=24 bit)
class FCPixelSmallTile : public FCPixelBilinearDistord
{
public:
    FCPixelSmallTile (int nXNum, int nYNum) : m_nXNum(FMax(1,nXNum)), m_nYNum(FMax(1,nYNum)) {}
protected:
    virtual BOOL  calc_undistorted_coord (int x, int y, double & un_x, double & un_y) const ;
protected:
    int     m_nXNum ;
    int     m_nYNum ;
} ;
//=============================================================================
// 图象卷积运算/image convolute (>= 24 bit)
class FCPixelConvolute : public FCSinglePixelProcessBase
{
public:
    // nElements为从矩阵左上角开始的数组, iBlockLen为矩阵宽度(正方形)
    FCPixelConvolute () ;
    virtual ~FCPixelConvolute() ;

    void  SetKernel (const int * nElements, int iBlockLen, int iDivisor, int nOffset = 0) ;

    virtual void OnEnterProcess (FCObjImage* pImg, RECT& rcImg) ;
    virtual void ProcessPixel (FCObjImage* pImg, int x, int y, BYTE* pPixel) ;

private:
    int     * m_pElement ;
    int     m_iBlock, m_iDivisor, m_nOffset ;
} ;
//=============================================================================
// 标准高斯模糊/regular gaussian blur (>=24 bit)
class FCPixelGaussianBlur3x3 : public FCPixelConvolute
{
public:
    FCPixelGaussianBlur3x3 () ;
} ;
class FCPixelGaussianBlur5x5 : public FCPixelConvolute
{
public:
    FCPixelGaussianBlur5x5 () ;
} ;
//=============================================================================
// 边缘检测/detect edges (>=24 bit)
class FCPixelDetectEdges : public FCPixelConvolute
{
public:
    FCPixelDetectEdges (int nRadius = 3) ; // nRadius >= 1
} ;
//=============================================================================
// 锐化/sharp (>=24 bit)
class FCPixelSharp : public FCPixelConvolute
{
public:
    FCPixelSharp (int nStep) ; // (>=1)
} ;
//=============================================================================
// 1, 4, 8, 24, 32 ==> 16
class FCPixelConvertTo16Bit : public FCSinglePixelProcessBase
{
protected:
    virtual BOOL  ValidateColorBits (const FCObjImage* pImg) ;
    virtual void  ProcessPixel (FCObjImage* pImg, int x, int y, BYTE* pPixel) ;
    virtual void  OnEnterProcess (FCObjImage* pImg, RECT& rcImg) ;
} ;
//=============================================================================
// 1, 4, 8, 16, 24, 32 ==> 8bit gray
class FCPixelConvertTo8BitGray : public FCSinglePixelProcessBase
{
protected:
    virtual BOOL  ValidateColorBits (const FCObjImage* pImg) ;
    virtual void  ProcessPixel (FCObjImage* pImg, int x, int y, BYTE* pPixel) ;
    virtual void  OnEnterProcess (FCObjImage* pImg, RECT& rcImg) ;
} ;
//=============================================================================
/// Quantize image.
class FCPixelConvertQuantize : public FCSinglePixelProcessBase
{
public:
    /// @param nBPP : 1 or 4 or 8
    FCPixelConvertQuantize (int nBPP) : m_nBPP(nBPP) {}
private:
    virtual BOOL ValidateColorBits (const FCObjImage* pImg) ;
    virtual void OnEnterProcess (FCObjImage* pImg, RECT& rcImg) ;

    int      m_nBPP ;
};
//=============================================================================
// 导出成ASCII文件/save a ASCII text file
class FCPixelExportAscII : public FCSinglePixelProcessBase
{
public:
    FCPixelExportAscII (const char* szFileName) ;
    virtual void ProcessPixel (FCObjImage* pImg, int x, int y, BYTE* pPixel) ;
    virtual void OnEnterProcess (FCObjImage* pImg, RECT& rcImg) ;
protected:
    char     m_chIndex[95] ;
    int      m_nGray[95] ;
    std::ofstream   m_outFile ;
} ;
//=============================================================================
// 分离RGB通道/splite RGB channel (>=24 bit)
class FCPixelSpliteChannel_RGB : public FCSinglePixelProcessBase
{
public:
    FCPixelSpliteChannel_RGB (FCObjImage * pImgR, FCObjImage * pImgG, FCObjImage * pImgB) : m_pImgR(pImgR), m_pImgG(pImgG), m_pImgB(pImgB) {}
    virtual void ProcessPixel (FCObjImage* pImg, int x, int y, BYTE* pPixel) ;
    virtual void OnEnterProcess (FCObjImage* pImg, RECT& rcImg) ;
protected:
    FCObjImage     * m_pImgR, * m_pImgG, * m_pImgB ;
} ;
//=============================================================================
// 合并RGB通道/combine RGB channel, 通道位图必须为8bit, 宽高必须一样
class FCPixelCombineChannel_RGB : public FCSinglePixelProcessBase
{
public:
    FCPixelCombineChannel_RGB (FCObjImage * pImgR, FCObjImage * pImgG, FCObjImage * pImgB) : m_pImgR(pImgR), m_pImgG(pImgG), m_pImgB(pImgB) {}
    virtual BOOL ValidateColorBits (const FCObjImage* pImg) ;
    virtual void ProcessPixel (FCObjImage* pImg, int x, int y, BYTE* pPixel) ;
protected:
    FCObjImage     * m_pImgR, * m_pImgG, * m_pImgB ;
} ;


//*****************************************************************************
//*****************************************************************************
// 统计出现的颜色个数/count image's number of color (>=24 bit)
class FCPixelColorsCount : public FCSinglePixelProcessBase
{
public:
	UINT	GetColorsNumber () const {return m_nCount;}
	virtual void ProcessPixel (FCObjImage* pImg, int x, int y, BYTE* pPixel) ;
	virtual void OnEnterProcess (FCObjImage* pImg, RECT& rcImg) ;
	virtual void  OnLeaveProcess (FCObjImage * pImg) ;
protected:
	UINT	m_nCount ;
	BYTE	* m_pMap ;
} ;
//=============================================================================
// 得到一个不在图像中出现的颜色,作透明色 (>=24 bit)
class FCPixelGetKeyColor : public FCPixelColorsCount
{
public:
	BOOL	IsFind () const {return m_bFind;}
	RGBQUAD	GetKeyColor () const {return m_crKey;}
	FCPixelGetKeyColor () {m_bFind = FALSE;}
	virtual void  OnLeaveProcess (FCObjImage * pImg) ;
protected:
	BOOL		m_bFind ;
	RGBQUAD		m_crKey ;
} ;


//=============================================================================
//	inline implement
//=============================================================================

#endif

⌨️ 快捷键说明

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