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

📄 embossfilter.cpp

📁 visual c++数字图像与图形处理中的光盘内容
💻 CPP
字号:
/////////////////////////////////////////////////////////////////////////////////
//
// EmbossFilter.cpp: implementation of the CEmbossFilter class.
//
////////////////////////////////////////////////////////////////////////////////
// 版权所有(2002)
// Copyright(2002)
// 编写者: 向世明
// Author: Xiang Shiming


#include "stdafx.h"
#include "EmbossFilter.h"


//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
IMPLEMENT_DYNAMIC(CEmbossFilter, CConvolutionFilter)
CEmbossFilter::CEmbossFilter()
{
	m_byRed = m_byGreen = m_byBlue = 128;
}

CEmbossFilter::~CEmbossFilter()
{
	CConvolutionFilter::~CConvolutionFilter();
}

#ifdef _DEBUG
void CEmbossFilter::Dump(CDumpContext& dc) const
{
	CConvolutionFilter::Dump(dc);
}

void CEmbossFilter::AssertValid() const
{
	CConvolutionFilter::AssertValid();
}
#endif

void CEmbossFilter::SetEmbossColor(BYTE byRed,  BYTE byGreen,  BYTE byBlue)
{
	m_byRed = byRed;
	m_byGreen = byGreen;
	m_byBlue = byBlue;
}

BOOL CEmbossFilter::Emboss(LPBYTE lpbyBits32,  int x,  int y,  int nWidth,  int nHeight,  int nScanWidth,  int nScanHeight)
{
	//进行卷积操作:
	return Filter(lpbyBits32,  x, y, nWidth, nHeight, nScanWidth,  nScanHeight);
}

PIXELCOLORRGB CEmbossFilter::Convolute(BYTE *pbyRed, BYTE *pbyGreen, BYTE *pbyBlue,  int nNum)
{
	int i, nSumRed, nSumGreen, nSumBlue;

	nSumRed = nSumGreen = nSumBlue = 0;

	for(i = 0 ; i < nNum;i++)
	{
		nSumRed += pbyRed[i] * m_pnKernel[i];
		nSumGreen += pbyGreen[i] * m_pnKernel[i];
		nSumBlue += pbyBlue[i] * m_pnKernel[i];
	}

	if((m_nKernelWeight != 0) && (m_nKernelWeight != 1))
	{
		nSumRed /= m_nKernelWeight;
		nSumGreen /= m_nKernelWeight;
		nSumBlue /= m_nKernelWeight;
	}


	nSumRed += m_byRed;
	nSumGreen += m_byGreen;
	nSumBlue += m_byBlue;

	PIXELCOLORRGB rgb;

	rgb.red = (BYTE)(BOUND(nSumRed, 0, 255));
	rgb.green = (BYTE)(BOUND(nSumGreen, 0, 255));
	rgb.blue = (BYTE)(BOUND(nSumBlue, 0, 255));

	return rgb;
}


⌨️ 快捷键说明

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