/* 程序名:wordrecorgnize.c 功能:输入文字图像及方格位置。识别含有有效字符的方格 */ #include #include #include #include #include "Point.h" #include "Cword.h" IplImage* wordrecognize(IplImage* imgbj,int *gridx,int *gridy,Cword *wordbox,int gx,int gy){ /*定义变量*/ int i,j,ni,numw,nblack=0,wnum=0; //Cword wordbox[150]; int sumnum=(gx-1)*(gy-1); int height,width,step,channels; uchar *data; /*定义新的图像*/ IplImage* imgwzbj = cvCreateImage(cvGetSize(imgbj),imgbj->depth,imgbj->nChannels); cvCopy(imgbj,imgwzbj,NULL); uchar *wzbjdata = (uchar *)imgwzbj->imageData; /* 获取图像信息*/ height = imgbj->height; width = imgbj->width; step = imgbj->widthStep; channels = imgbj->nChannels; data = (uchar *)imgbj->imageData; /*开始处理*/ for(i=0;i80){ wordbox[ni].isword=true; wnum++; wordbox[ni].nn=wnum; //printf("x= %d;;;y=%d \n",wordbox[ni].wbegin.x,wordbox[ni].wbegin.y); wzbjdata[(wordbox[ni].wbegin.x+2)*step+(wordbox[ni].wbegin.y+2)*channels]=0; //标在一幅图上,是文字,标一个+ wzbjdata[(wordbox[ni].wbegin.x+1)*step+(wordbox[ni].wbegin.y+2)*channels]=0; wzbjdata[(wordbox[ni].wbegin.x+3)*step+(wordbox[ni].wbegin.y+2)*channels]=0; wzbjdata[(wordbox[ni].wbegin.x+2)*step+(wordbox[ni].wbegin.y+1)*channels]=0; wzbjdata[(wordbox[ni].wbegin.x+2)*step+(wordbox[ni].wbegin.y+3)*channels]=0; //wzbjdata[(wordbox[ni].wbegin.x)*step+(wordbox[ni].wbegin.y+2)*channels]=0; //wzbjdata[(wordbox[ni].wbegin.x+4)*step+(wordbox[ni].wbegin.y+2)*channels]=0; //wzbjdata[(wordbox[ni].wbegin.x+2)*step+(wordbox[ni].wbegin.y)*channels]=0; //wzbjdata[(wordbox[ni].wbegin.x+2)*step+(wordbox[ni].wbegin.y+4)*channels]=0; } else{ wordbox[ni].isword=false; wzbjdata[(wordbox[ni].wbegin.x+2)*step+(wordbox[ni].wbegin.y+2)*channels]=0; //标在一幅图上,不是文字,标一个- wzbjdata[(wordbox[ni].wbegin.x+2)*step+(wordbox[ni].wbegin.y+1)*channels]=0; wzbjdata[(wordbox[ni].wbegin.x+2)*step+(wordbox[ni].wbegin.y+3)*channels]=0; //wzbjdata[(wordbox[ni].wbegin.x+2)*step+(wordbox[ni].wbegin.y)*channels]=0; //wzbjdata[(wordbox[ni].wbegin.x+2)*step+(wordbox[ni].wbegin.y+4)*channels]=0; } wordbox[ni].blacknum=nblack; nblack=0; } return imgwzbj; }