資源簡介
《VC++ 圖像文字提取》項目,是采用vc++和opencv技術對單張的圖片進行分析,提取出圖片上面的文字信息,去掉雜余的信息(圖案等)形成新的只含有文字的圖片;對模式識別,車牌識別,圖片文字抽取等opencv學習有一定的參考和學習意義! 這里免費分享!
代碼片段和文件信息
//Download?by?http://www.NewXing.com
#include?“stdafx.h“
#include?“GlobalApi.h“
#include?“Cdib.h“
#include?
#include?
#include?
#include?
?/*
??說明:
???該函數將消去圖象中面積小于或大于閾值的區域,實現文字提取*/
?
?
BOOL?DIBHOLENUMBER(CDib?*pDib)
{
//?指向源圖像的指針
BYTE?* lpSrc;
//圖象的寬度和高度
LONG????lWidth;
LONG????lHeight;
//?圖像每行的字節數
LONG lLineBytes;
//得到圖象的寬度和高度
CSize???SizeDim;
SizeDim?=?pDib->GetDimensions();
lWidth??=?SizeDim.cx;
lHeight?=?SizeDim.cy;
//得到實際的Dib圖象存儲大小
CSize???SizeRealDim;
SizeRealDim?=?pDib->GetDibSaveDim();
//?計算圖像每行的字節數
lLineBytes?=?SizeRealDim.cx;
//圖像數據的指針
LPBYTE??lpDIBBits?=?pDib->m_lpImage;
//?循環變量
int?i?j?s?n;
//?空穴的數目以及面積閾值
int?nHoleNum?nMinAreanMaxArea;
int?nBlackPix?temp;
//?正向和反響傳播標志
int?nDir1nDir2;
//?用來存儲的一位數組
int?*pnBinary;
pnBinary?=new?int[lHeight*lLineBytes];
//?定義閾值的大小
nMinArea?=?130;?
nMaxArea?=?700;
//?將圖象二值化
for?(j?=?0;?j? {
for(i?=?0;?i? {
//?指向源圖像倒數第j行,第i個象素的指針
lpSrc?=?(unsigned?char?*)lpDIBBits?+?lLineBytes?*?j?+?i;
//?白色象素為背景,存成0
if(*lpSrc?>?200)
{
pnBinary[lLineBytes?*?j?+?i]?=?0;
}
//?黑象素存成-1
else
{
pnBinary[lLineBytes?*?j?+?i]?=?-1;
}
}
}
//?空穴數賦初值
nHoleNum?=?1;
do
{
s=0;
//?尋找每個空穴的初始象素值?
for?(j?=?1;?j? {
for(i?=?1;?i? {
//?找到初始象素
if(pnBinary[lLineBytes?*?j?+?i]?==?-1)
{
s?=?1;
//?將象素值改成當前的空穴數值
pnBinary[lLineBytes?*?j?+?i]?=?nHoleNum;
//?跳出循環
j?=?lHeight;
i?=?lLineBytes;
}
}
}
//沒有初始象素,跳出循環
if(s?==?0)
break;
else
{
do
{
//?正向和反響系數賦初值0
nDir1?=?0;
nDir2?=?0;
//?正向掃描
for?(j?=?1;?j? {
for(i?=?1;?i? {
nBlackPix?=?pnBinary[lLineBytes?*?j?+?i];
//?如果象素已經被掃描,或者是背景色,進行下一個循環
?if(nBlackPix?!=?-1)
continue;
//?如果上側或者左側的象素值已經被掃描,且屬于當前的空穴,當前的象素值
//?改成空穴的數值
nBlackPix=pnBinary[lLineBytes?*?(j-1)?+?i];
if(nBlackPix?==?nHoleNum)
{
pnBinary[lLineBytes?*?j?+?i]?=?nHoleNum;
nDir1?=?1;
continue;
}
nBlackPix?=pnBinary[lLineBytes?*?j?+?i?-?1];
if(nBlackPix?==?nHoleNum)
{
pnBinary[lLineBytes?*?j?+?i]?=?nHoleNum;
nDir1?=?1;
}
}
}
//?正向象素全部被掃描,跳出循環
if(nDir1?==?0)
break;
//?反向掃描
for?(j?=?lHeight-2;?j?>=?1?;?j--)
{
for(i?=?lWidth-2;?i?>=?1?;?i--)
{
nBlackPix?=?pnBinary[lLineBytes?*?j?+?i];
//?如果象素已經被掃描,或者是背景色,進行下一個循環
if(nBlackPix?!=?-1)
continue;
//?如果下側或者右側的象素值已經被掃描,且屬于當前的空穴,當前的象素值
//?改成空穴的數值
nBlackPix=pnBinary[lLineBytes?*?(j+1)?+?i];
if(nBlackPix?==?nHoleNum)
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2016-04-12?09:17??VC++?圖像文字提取\
?????目錄???????????0??2016-04-12?10:20??VC++?圖像文字提取\圖像中文字提取的程序\
?????目錄???????????0??2016-04-12?09:17??VC++?圖像文字提取\圖像中文字提取的程序\Backup\
?????文件???????22763??2016-04-12?09:28??VC++?圖像文字提取\圖像中文字提取的程序\CDIB.CPP
?????文件????????3535??2011-05-12?08:23??VC++?圖像文字提取\圖像中文字提取的程序\CDIB.H
?????目錄???????????0??2016-04-12?09:28??VC++?圖像文字提取\圖像中文字提取的程序\Debug\
?????文件??????225028??2016-04-12?09:28??VC++?圖像文字提取\圖像中文字提取的程序\Debug\CDIB.obj
?????文件??????146729??2016-04-12?09:18??VC++?圖像文字提取\圖像中文字提取的程序\Debug\ImageAnalysis.obj
?????文件??????163840??2016-04-12?09:28??VC++?圖像文字提取\圖像中文字提取的程序\Debug\ImageProcessing.exe
?????文件?????1752988??2016-04-12?09:28??VC++?圖像文字提取\圖像中文字提取的程序\Debug\ImageProcessing.ilk
?????文件????????2471??2016-04-12?09:28??VC++?圖像文字提取\圖像中文字提取的程序\Debug\ImageProcessing.log
?????文件???????54548??2016-04-12?09:21??VC++?圖像文字提取\圖像中文字提取的程序\Debug\ImageProcessing.obj
?????文件????27721728??2016-04-12?09:18??VC++?圖像文字提取\圖像中文字提取的程序\Debug\ImageProcessing.pch
?????文件?????5681152??2016-04-12?09:28??VC++?圖像文字提取\圖像中文字提取的程序\Debug\ImageProcessing.pdb
?????文件????????7476??2016-04-12?09:28??VC++?圖像文字提取\圖像中文字提取的程序\Debug\ImageProcessing.res
?????目錄???????????0??2016-04-12?09:28??VC++?圖像文字提取\圖像中文字提取的程序\Debug\ImageProcessing.tlog\
?????文件????????6000??2016-04-12?09:28??VC++?圖像文字提取\圖像中文字提取的程序\Debug\ImageProcessing.tlog\cl.command.1.tlog
?????文件???????69050??2016-04-12?09:28??VC++?圖像文字提取\圖像中文字提取的程序\Debug\ImageProcessing.tlog\CL.read.1.tlog
?????文件????????5656??2016-04-12?09:28??VC++?圖像文字提取\圖像中文字提取的程序\Debug\ImageProcessing.tlog\CL.write.1.tlog
?????文件?????????207??2016-04-12?09:28??VC++?圖像文字提取\圖像中文字提取的程序\Debug\ImageProcessing.tlog\ImageProcessing.lastbuildstate
?????文件????????2406??2016-04-12?09:28??VC++?圖像文字提取\圖像中文字提取的程序\Debug\ImageProcessing.tlog\li
?????文件????????7080??2016-04-12?09:28??VC++?圖像文字提取\圖像中文字提取的程序\Debug\ImageProcessing.tlog\li
?????文件????????1638??2016-04-12?09:28??VC++?圖像文字提取\圖像中文字提取的程序\Debug\ImageProcessing.tlog\li
?????文件?????????802??2016-04-12?09:28??VC++?圖像文字提取\圖像中文字提取的程序\Debug\ImageProcessing.tlog\rc.command.1.tlog
?????文件????????3348??2016-04-12?09:28??VC++?圖像文字提取\圖像中文字提取的程序\Debug\ImageProcessing.tlog\rc.read.1.tlog
?????文件?????????298??2016-04-12?09:28??VC++?圖像文字提取\圖像中文字提取的程序\Debug\ImageProcessing.tlog\rc.write.1.tlog
?????文件???????77555??2016-04-12?09:18??VC++?圖像文字提取\圖像中文字提取的程序\Debug\ImageProcessingDoc.obj
?????文件??????171952??2016-04-12?09:22??VC++?圖像文字提取\圖像中文字提取的程序\Debug\ImageProcessingView.obj
?????文件???????55354??2016-04-12?09:18??VC++?圖像文字提取\圖像中文字提取的程序\Debug\MainFrm.obj
?????文件??????832671??2016-04-12?09:18??VC++?圖像文字提取\圖像中文字提取的程序\Debug\StdAfx.obj
?????文件?????1666048??2016-04-12?09:28??VC++?圖像文字提取\圖像中文字提取的程序\Debug\vc120.idb
............此處省略43個文件信息
- 上一篇:易學C++ 潘嘉杰 完整版+答案
- 下一篇:數據結構大作業雜志管理系統
評論
共有 條評論