汽车牌照识别的问题!

chicksoup 2002-05-23 04:08:15
大家好!我现在的课题是汽车牌照的识别,老师给了我一幅dcs.bmp的黑白图片,可是我不知道该怎么样输入和显示,希望大家能帮我,感激不尽.我有一份参考程序,不过有问题,而且不知道怎样输入假设的dcs.bmp图片信息和显示,用TC2.0编的,希望大家能帮忙!有高手行的话,可以帮我作好吗?我只要求能做到能看到屏幕上有图象显示就好了,当然大家可以给我更好的参考程序,但必须是TC2.0作好的,一定要能在屏幕上看到结果,感激不尽!X1,X2,Y1,Y2是图片中车牌位置!送分!我的EMAIL:tjlion@163.net请将具体操作过程写清楚好吗?
#include<stdio.h>
#include<conio.h>
#include<dos.h>
#include<alloc.h>
#include<graphics.h>
#include<math.h>
typedef struct BIMAPFILEHEADER //*BMP文件头*//
{
int bftype;
long bfsize;
int reservel;
int reserve2;
long offbit;
} fileheader;
typedef struct BITMAPINFOHEADER
{
long size;
long width;
long height;
int plane;
int bitcount;
long compress;
long sizeimage;
long xpelspermeter;
long ypelspermeter;
long irused;
long crimportant;
} infoheader;

static int f[150][80],f1[150][80]; //*数组表示子图象*//
int i,j,m,n,a,b,wx,X,Y,x1,x2,y1,y2; //*X1,X2,Y1,Y2表示车牌在图中的位置*//
int max,driver,mode; //*下面都是对数组的处理,不用管,看看输出就好

main(int argc,char* *argv)
{FILE *fp;
char far *p;

if(argc==1)
{printf("usage:%s imgfile\n", strupr(argv[0]));
return(1);}
if((fp=fopen(argv[1],"rb"))==NULL)
{printf("[%s]open error.\n",argv[1]);
return(1);}
if(fread((char *struct)&fileheader,1,sizeof(struct BIMAPFILEHEADER),fp)!=sizeof(struct BIMAPFILEHEADER))
{printf("[%s]read error.\n",argv[1]);
return(1);}
if(fread((char *struct)&infoheader,1,sizeof(struct BITMAPINFOHEADER),fp)!=sizeof(struct BITMAPINFOHEADER))
{printf("[%s]read error.\n",argv[1]);
return(1);}
if(infoheader.compress!=0)
{printf("only support non compress.\n");
return(1);}
if(infoheader.bitcount!=8)
{printf("[%s]is not 256bmp file.\n",argv[1]);
return(1);}
fseek(fp,fileheader.offbit,0);
for(j=0;j<480;j++) //*求象素最大值*//
{for(i=0;i<640;i++)
{a=getc(fp);
wx=a-max*0.1;
if(wx<0)wx=0;
b=15*wx/(max*0.9);
putpixel(i,480-j,b);}}
getch();
printf("please input x1,x2,y1,y1(x1<x2 y1<y2);\n");
scanf("%d,%d,%d,%d",&x1,&x2,&y1,&y2);
fseek(fp,fileheader.offbit,0);
for(j=0;j<480;j++)
{for(i=0;i<640;i++)
{a=getc(fp);
wx=a-max*0.1;
if(wx<0)wx=0;
b=15*wx/(max*0.9);
if(i>x1&&i<x2)
if(i>y1&&i<y2)
{m=i-x1;
n=j-y1;
f[m][n]=b;
putpixel(i,480-j,b);}}}
X=x2-x1;
if(X>150){printf("xsize is too lage!\n");return(1);}
Y=y2-y1;
if(Y>150){printf("ysize is too lage!\n");return(1);}
getch();
for(m=0;m<5;m++)
{for(i=0;i<X-2;i++)
{for(j=0;j<Y-2;j++)
{f1[i][j]=(f[i-1][j-1]+f[i+1][j+1]+f[i-1][j+1]+f[i+1][j-1]+2*(f[i][j-1]+f[i][j+1]+f[i-1][j]+f[i+1][j])+4*f[i][j])/16;
}}
for(i=0;i<X-1;i++)
{f1[i][0]=(f[i-1][1]+f[i+1][1]+2*(f[i-1][0]+f[i+1][0]+f[i][1])+3*f[i][0])/11;
f1[i][Y-1]=(f[i-1][Y-2]+f[i+1][Y-2]+2*(f[i-1][Y-2]+f[i][Y-2]+f[i+1][Y-1])+3*f[i][Y-1])/11;}
for(j=1;j<Y-1;j++)
{f1[0][j]=(f[1][j-1]+f[1][j+1]+2*(f[0][j+1]+f[1][j]+f[0][j-1])+3*f[i][0])/11;
f1[X-1][j]=(f[X-2][j-1]+f[X-2][j+1]+2*(f[X-1][j-1]+f[X-2][j]+f[X-1][j+1])+3*f[X-1][j])/11;}
f1[0][0]=(f[0][0]*3+2*(f[0][1]+f[1][0])+f[1][1])/9;
f1[X-1][0]=(f[X-1][0]*3+2*(f[X-2][0]+f[X-1][1])+f[X-2][1])/9;
f1[0][Y-1]=(f[0][Y-1]*3+2*(f[0][Y-2]+f[1][Y-1])+f[1][Y-2])/9;
f1[X-1][Y-1]=(f[X-1][Y-1]*3+2*(f[X-1][Y-2]+f[X-2][Y-1])+f[X-2][Y-2])/9;
for(i=0;i<X;i++)
{for(j=0;j<Y;j++)
{a=f1[i][j];
f1[i][j]=a;
putpixel(i,60+Y-j,a);}}
getch();}
closegraph();
fclose(fp);}

...全文
160 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

4,446

社区成员

发帖
与我相关
我的任务
社区描述
图形图像/机器视觉
社区管理员
  • 机器视觉
  • 迪菲赫尔曼
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧