資源簡介
用OPENCV 實現郵政編碼的識別 包括傾斜矯正和字符分隔

代碼片段和文件信息
#include?
#include?
#include?
#include?
#include?
#include?
using?namespace?std;
IplImage*?rotateImage2(IplImage*?img?double?angle)????
{????
//double?angle?=?degree?/180*CV_PI;?
int?step;
int?ijk;
uchar*data?;
cout<<“angle=“< double?a?=?sin(angle)?b?=?cos(angle);???
int?width=img->width?height=img->height;??
//旋轉后的新圖尺寸??
int?width_rotate=?int(height?*?fabs(a)?+?width?*?fabs(b));????
int?height_rotate=int(width?*?fabs(a)?+?height?*?fabs(b));????
IplImage*?img_rotate?=?cvCreateImage(cvSize(width_rotate?height_rotate)?img->depth?img->nChannels);?
cvZero(img_rotate);????
????step=img->widthStep/sizeof(uchar);
data???=?(uchar*)img->imageData;
for(i=0;iheight;i++)
for(j=0;jwidth;j++)
for(k=0;knChannels;k++)
data[i*step+j*img->nChannels+k]=255-data[i*step+j*img->nChannels+k];//反色
//保證原圖可以任意角度旋轉的最小尺寸??
int?tempLength?=?sqrt((double)width?*?width?+?(double)height?*height)?+?10;????
int?tempX?=?(tempLength?+?1)?/?2?-?width?/?2;????
int?tempY?=?(tempLength?+?1)?/?2?-?height?/?2;????
IplImage*?temp?=?cvCreateImage(cvSize(tempLength?tempLength)?img->depth?img->nChannels);????
cvZero(temp);????
//將原圖復制到臨時圖像tmp中心??
cvSetImageROI(temp?cvRect(tempX?tempY?width?height));????
cvCopy(img?temp?NULL);????
cvResetImageROI(temp);????
//旋轉數組map??
//?[?m0??m1??m2?]?===>??[?A11??A12???b1?]??
//?[?m3??m4??m5?]?===>??[?A21??A22???b2?]??
float?m[6];????
int?w?=?temp->width;????
int?h?=?temp->height;????
m[0]?=?b;????
m[1]?=?a;????
m[3]?=?-m[1];????
m[4]?=?m[0];????
//?將旋轉中心移至圖像中間????
m[2]?=?w?*?0.5f;????
m[5]?=?h?*?0.5f;????
CvMat?M?=?cvMat(2?3?CV_32F?m);????
cvGetQuadrangleSubPix(temp?img_rotate?&M);??
step=img_rotate->widthStep/sizeof(uchar);
data???=?(uchar*)img_rotate->imageData;
for(i=0;iheight;i++)
for(j=0;jwidth;j++)
for(k=0;knChannels;k++)
data[i*step+j*img_rotate->nChannels+k]=255-data[i*step+j*img_rotate->nChannels+k];//反色
cvReleaseImage(&temp);????
return?img_rotate;??
}?
int?otsu(const?IplImage?*src)
{
double?sum=0.0;
double?w0=0.0;
double?w1=0.0;
double?u0_temp=0.0;
double?u1_temp=0.0;
double?u0=0.0;
double?u1=0.0;
double?delta_temp=0.0;
double?delta_max=0.0;
int?pixel_count[256]={0};
float?pixel_pro[256]={0};
int?threshold=0;
uchar?*data=(uchar?*)src->imageData;
for(int?i=0;iheight;i++)
{
for(int?j=0;jwidth;j++)
{
pixel_count[(int)data[i*src->width+j]]++;
sum+=(int)data[i*src->width+j];
}
}
cout<<“平均灰度:“<height*src->width)<
for(int?i=0;i<256;i++)
{
pixel_pro[i]=(float)pixel_count[i]/(src->height*src->width);
}
for(int?i=0;i<256;i++)
{
w0=w1=u0_temp=u1_temp=u0=u1=delta_temp=0;
for(int?j=0;j<256;j++)
{
if(j<=i)
{
w0+=pixel_pro[j];
u0_temp+=j*pixel_pro
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件??????26839??2013-05-18?18:13??郵政編碼識別\圖片\save1.jpg
?????文件??????27927??2013-05-18?15:20??郵政編碼識別\圖片\save18.jpg
?????文件??????29007??2013-05-18?18:14??郵政編碼識別\圖片\save3.jpg
?????文件??????80896??2014-12-28?21:56??郵政編碼識別\郵政編碼識別程序\Debug\zifushibie.exe
?????文件?????483052??2014-12-28?21:56??郵政編碼識別\郵政編碼識別程序\Debug\zifushibie.ilk
?????文件????1698816??2014-12-28?21:56??郵政編碼識別\郵政編碼識別程序\Debug\zifushibie.pdb
?????文件???????1178??2014-12-28?21:56??郵政編碼識別\郵政編碼識別程序\zifushibie\Debug\cl.command.1.tlog
?????文件??????38266??2014-12-28?21:56??郵政編碼識別\郵政編碼識別程序\zifushibie\Debug\CL.read.1.tlog
?????文件????????288??2014-12-28?21:56??郵政編碼識別\郵政編碼識別程序\zifushibie\Debug\CL.write.1.tlog
?????文件??????????2??2014-12-28?21:56??郵政編碼識別\郵政編碼識別程序\zifushibie\Debug\li
?????文件??????????2??2014-12-28?21:56??郵政編碼識別\郵政編碼識別程序\zifushibie\Debug\li
?????文件??????????2??2014-12-28?21:56??郵政編碼識別\郵政編碼識別程序\zifushibie\Debug\li
?????文件??????????2??2014-12-28?21:56??郵政編碼識別\郵政編碼識別程序\zifushibie\Debug\li
?????文件??????????2??2014-12-28?21:56??郵政編碼識別\郵政編碼識別程序\zifushibie\Debug\li
?????文件??????????2??2014-12-28?21:56??郵政編碼識別\郵政編碼識別程序\zifushibie\Debug\li
?????文件??????????2??2014-12-28?21:56??郵政編碼識別\郵政編碼識別程序\zifushibie\Debug\li
?????文件??????????2??2014-12-28?21:56??郵政編碼識別\郵政編碼識別程序\zifushibie\Debug\li
?????文件??????????2??2014-12-28?21:56??郵政編碼識別\郵政編碼識別程序\zifushibie\Debug\li
?????文件??????????2??2014-12-28?21:56??郵政編碼識別\郵政編碼識別程序\zifushibie\Debug\li
?????文件??????????2??2014-12-28?21:56??郵政編碼識別\郵政編碼識別程序\zifushibie\Debug\li
?????文件??????????2??2014-12-28?21:56??郵政編碼識別\郵政編碼識別程序\zifushibie\Debug\li
?????文件??????????2??2014-12-28?21:56??郵政編碼識別\郵政編碼識別程序\zifushibie\Debug\li
?????文件??????????2??2014-12-28?21:56??郵政編碼識別\郵政編碼識別程序\zifushibie\Debug\li
?????文件??????????2??2014-12-28?21:56??郵政編碼識別\郵政編碼識別程序\zifushibie\Debug\li
?????文件??????????2??2014-12-28?21:56??郵政編碼識別\郵政編碼識別程序\zifushibie\Debug\li
?????文件??????????2??2014-12-28?21:56??郵政編碼識別\郵政編碼識別程序\zifushibie\Debug\li
?????文件??????????2??2014-12-28?21:56??郵政編碼識別\郵政編碼識別程序\zifushibie\Debug\li
?????文件??????????2??2014-12-28?21:56??郵政編碼識別\郵政編碼識別程序\zifushibie\Debug\li
?????文件??????????2??2014-12-28?21:56??郵政編碼識別\郵政編碼識別程序\zifushibie\Debug\li
?????文件??????????2??2014-12-28?21:56??郵政編碼識別\郵政編碼識別程序\zifushibie\Debug\li
............此處省略42個文件信息
評論
共有 條評論