• 大小: 3.64MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-09-10
  • 语言: 其他
  • 标签: OPENCV  

资源简介

用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\link-cvtres.read.1.tlog

     文件          2  2014-12-28 21:56  邮政编码识别\邮政编码识别程序\zifushibie\Debug\link-cvtres.write.1.tlog

     文件          2  2014-12-28 21:56  邮政编码识别\邮政编码识别程序\zifushibie\Debug\link-rc.read.1.tlog

     文件          2  2014-12-28 21:56  邮政编码识别\邮政编码识别程序\zifushibie\Debug\link-rc.write.1.tlog

     文件          2  2014-12-28 21:56  邮政编码识别\邮政编码识别程序\zifushibie\Debug\link.10980-cvtres.read.1.tlog

     文件          2  2014-12-28 21:56  邮政编码识别\邮政编码识别程序\zifushibie\Debug\link.10980-cvtres.write.1.tlog

     文件          2  2014-12-28 21:56  邮政编码识别\邮政编码识别程序\zifushibie\Debug\link.10980-rc.read.1.tlog

     文件          2  2014-12-28 21:56  邮政编码识别\邮政编码识别程序\zifushibie\Debug\link.10980-rc.write.1.tlog

     文件          2  2014-12-28 21:56  邮政编码识别\邮政编码识别程序\zifushibie\Debug\link.10980.read.1.tlog

     文件          2  2014-12-28 21:56  邮政编码识别\邮政编码识别程序\zifushibie\Debug\link.10980.write.1.tlog

     文件          2  2014-12-28 21:56  邮政编码识别\邮政编码识别程序\zifushibie\Debug\link.11612-cvtres.read.1.tlog

     文件          2  2014-12-28 21:56  邮政编码识别\邮政编码识别程序\zifushibie\Debug\link.11612-cvtres.write.1.tlog

     文件          2  2014-12-28 21:56  邮政编码识别\邮政编码识别程序\zifushibie\Debug\link.11612-rc.read.1.tlog

     文件          2  2014-12-28 21:56  邮政编码识别\邮政编码识别程序\zifushibie\Debug\link.11612-rc.write.1.tlog

     文件          2  2014-12-28 21:56  邮政编码识别\邮政编码识别程序\zifushibie\Debug\link.11612.read.1.tlog

     文件          2  2014-12-28 21:56  邮政编码识别\邮政编码识别程序\zifushibie\Debug\link.11612.write.1.tlog

     文件          2  2014-12-28 21:56  邮政编码识别\邮政编码识别程序\zifushibie\Debug\link.15640-cvtres.read.1.tlog

     文件          2  2014-12-28 21:56  邮政编码识别\邮政编码识别程序\zifushibie\Debug\link.15640-cvtres.write.1.tlog

     文件          2  2014-12-28 21:56  邮政编码识别\邮政编码识别程序\zifushibie\Debug\link.15640-rc.read.1.tlog

     文件          2  2014-12-28 21:56  邮政编码识别\邮政编码识别程序\zifushibie\Debug\link.15640-rc.write.1.tlog

     文件          2  2014-12-28 21:56  邮政编码识别\邮政编码识别程序\zifushibie\Debug\link.15640.read.1.tlog

............此处省略42个文件信息

评论

共有 条评论