资源简介
用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个文件信息
相关资源
- opencv 神经网络分类
- opencv中文chm参考api文档
- opencv识别单行数字
- 颜色增强算法Opencv
- 一个基于 OpenCV 的人脸识别系统
- opencv检测人眼并精准定位瞳孔
- Opencv实现物体识别和追踪
- 基于OpenCV多目标的模板匹配算法
- Opencv中文手册资料
- opencv js单独文件
- opencv车辆检测model
- 编译opencv缺失的boostdesc_bgm.i等文件
- 基于OpenCV进行图像拼接原理解析和编
- boostdesc_bgm.i等.tar.gz
- 色彩恢复的多尺度Retinex算法MSRCR-VS2
- opencv3.3 自编译需要的xfeatures2d
- OpenCVdemo6by浅墨.rar
- 视频前景提取基于opencv的运动物体检
- 光流法运动跟踪
- KCF视频目标跟踪OPENCV+VS+WIN
- cv100.dll、cxcore100.dll、cxts001.dll、high
- OpenNI、OpenCV安装与开发环境配置
- opencv特征提取 颜色直方图、纹理
- 基于opencv的图像检索系统
- 基本opencv的粒子滤波目标跟踪
- OpenCV上目标跟踪和行人跟踪需要的视
- OpenCV图像视频采集 DirectShow 64位32位库
-
opencvHaar特征进行的分类器-所有xm
- 视觉词袋训练
- vgg_generated_48,vgg_generated_64,vgg_gene
评论
共有 条评论