• 大小: 2KB
    文件类型: .rar
    金币: 2
    下载: 0 次
    发布日期: 2024-01-31
  • 语言: 其他
  • 标签:

资源简介

印章识别技术

资源截图

代码片段和文件信息

// YinZhang.cpp
// 印章图像处理的一些接口
//
//////////////////////////////////////////////////////////////////////

#include “YinZhang.h“
#include “math.h“

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CYinZhang::CYinZhang()
{
m_tOriPixelArray = NULL;//原始位图数据
m_tResPixelArray = NULL;//参考位图数据
}

CYinZhang::~CYinZhang()
{

}

////////////////////////////////////////////////////////////////////
//功能:装载图像
//参数:FilePathName-图像文件路径名
void CYinZhang::LoadImage(CString &FilePathName)
{
int ij;
//检测是否为空,不为空则要释放内存
if(m_tOriPixelArray !=NULL)
{
for(i=0; i {
delete m_tOriPixelArray[i];
delete m_tResPixelArray[i];
delete ImageArray[i];
}
}

m_dib->Open(FilePathName);
ImageWidth = m_dib->GetWidth();
ImageHeight = m_dib->GetHeight();

BYTE *colorTable;
colorTable = (BYTE *)m_dib->m_pDibBits;
int byteBitCount  = m_dib->GetBiBitCount()/8;

m_tOriPixelArray  = new RGBQUAD*[ImageHeight];
m_tResPixelArray  = new RGBQUAD*[ImageHeight];
ImageArray = new BYTE*[ImageHeight];
for(int l=0 ; l {
m_tOriPixelArray[l] = new RGBQUAD[ImageWidth];
m_tResPixelArray[l] = new RGBQUAD[ImageWidth];
ImageArray[l] = new BYTE[ImageWidth];
}

int count = 0;
for(i=ImageHeight-1; i>=0; i--)
{
for(j=0; j {
m_tOriPixelArray[i][j].rgbBlue =colorTable[count++];
m_tOriPixelArray[i][j].rgbGreen=colorTable[count++];
m_tOriPixelArray[i][j].rgbRed  =colorTable[count++];
m_tOriPixelArray[i][j].rgbReserved = 0;
m_tResPixelArray[i][j]=m_tOriPixelArray[i][j];
ImageArray[i][j] = (BYTE)(((unsigned int)m_tOriPixelArray[i][j].rgbBlue
+(unsigned int)m_tOriPixelArray[i][j].rgbGreen
+(unsigned int)m_tOriPixelArray[i][j].rgbRed)/3);
count += byteBitCount-3;
}
count += (4-(ImageWidth*byteBitCount)%4)%4;
}
}

/////////////////////////////////////////////////////////////////////////////
//  去除背景
//  这里简单的采用了从原图像中提取红色部分的方案
//  参数:refer-预先设定的红色图像印章聚类的中心值
void CYinZhang::EroseBackground(RGBQUAD &refer)
{
//定义阈值,可以适当的变动
unsigned char threR = 50;
unsigned char threG = 50;
unsigned char threB = 50;
BOOL rIn gIn bIn; //用来标志RGB分量是否在阈值范围内
unsigned char temp;

int ij;
for(i=0; i {
for(j=0; j {
//先判断R分量
if((m_tOriPixelArray[i][j].rgbRed > refer.rgbRed) 
&& (m_tOriPixelArray[i][j].rgbRed-refer.rgbRed rIn = true;
else if((refer.rgbRed > m_tOriPixelArray[i][j].rgbRed)
&& (refer.rgbRed-m_tOriPixelArray[i][j].rgbRed rIn = true;
else
rIn = false;

//判断G分量
if((m_tOriPixelArray[i][j].rgbGreen > refer.rgbGreen) 
&& (m_tOriPixelArray[i][j].rgbGreen-refer.rgbGreen gIn = true;
else if((refer.rgbGreen > m_tOriPixelArray[i][j].rgbGreen)
&& (refer.rg

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       4538  2011-08-11 09:15  第11章  印章识别\印章识别算法实例\YinZhang.cpp

     文件        950  2011-08-11 09:15  第11章  印章识别\印章识别算法实例\YinZhang.h

     目录          0  2011-08-11 10:20  第11章  印章识别\印章识别算法实例

     目录          0  2011-08-11 10:20  第11章  印章识别

----------- ---------  ---------- -----  ----

                 5488                    4


评论

共有 条评论

相关资源