用c++写的车牌识别程序(前面一小段)#include #include #include //#include #include #include #include //#include "cv.h" //#include "highgui.h" #include "math.h" #define pi 3.14 #define RADIAN(angle) ((angle)*3.14/180.0) #define max(a,b) (((a) > (b)) ? (a) : (b)) #define min(a,b) (((a) < (b)) ? (a) : (b)) typedef unsigned long DWORD; typedef int BOOL; typ edef unsigned char BYTE; typedef unsigned short WORD; typedef float FLOAT; typedef unsigned char byte; //#define MAX(a,b,c) a>(b>c?b:c)?a: struct BMP_img { WORD bfType; DWORD size; DWORD reser; DWORD header_length; DWORD infoheader_length; DWORD width; DWORD height; WORD biplanes; WORD bmp_type; /* 8bit 24bit; */ DWORD compres; DWORD datasize; DWORD bixpm; DWORD biypm; DWORD clrused; DWORD relclrused; BYTE *image; byte *header_info; DWORD lineBytes; }; struct Bmp1{ DWORD width; DWORD height; byte strc[67][800]; BYTE *image; int p1[15];//xl int p2[15];//xr int p3[15];//yu int p4[15];//yd int up; int down; byte strr[7][2500]; byte string[7]; float ang;//倾斜角度 }; struct HSV{ float H; float S; int V; }; struct RGB{ byte bitb; byte bitg; byte bitr; byte re; }; void read_img(FILE *infile, struct BMP_img *img); //void read_img(FILE *infile, struct BMP_img *img); void displaytwo(struct Bmp1 img,byte *srcBmp,byte *dstBmp,int yuzhi); unsigned char myGetMedianNum(unsigned char * bArray, int iFilterLen); void cuizhitouying(struct Bmp1 *img,byte *temp); void sob(byte *srcBmp,int width,int height,int type); void shuipingtouying(struct Bmp1 *img,byte *temp); //void display(BMP_img img,byte *temp); void grayScale(struct BMP_img img,byte *srcBmp,byte *dstBmp); void junheng(struct BMP_img img,byte *srcBmp,byte *dstBmp); void CutBmp(struct BMP_img img,struct Bmp1 *img1,int HL,int HH,int VL,int VH); void CutBmp1(struct Bmp1 *img1,int HL,int HH,int VL,int VH); void testhsv(float h,float s,float v,byte r,byte g,byte b); void hsvzation(byte *image,struct HSV *hsv,int width,int height); void location(byte *image,int width,int height,int yuzhi,int *HL,int *HH,int *VL,int *VH); void huidu(struct Bmp1 img,byte *srcBmp,byte *dstBmp); void bmptwo(struct Bmp1 img,byte *srcBmp,byte *dstBmp,byte yuzhi); void Thiningtest(struct BMP_img img,byte *srcBmp,byte *dstBmp); void Thining(byte *srcBmp,int width,int height); void ThinnerRosenfeld(void *image, unsigned long lx, unsigned long ly); void delpoint(byte *dst,int width,int height,int yuzhi); void Erosion(byte *image,int width,int height,int type,int num); void deljunzao(byte *dst,int width,int height,int yuzhi); void pingjun(byte *dst,int width,int height); void changeGray(byte *srcBmp,byte *dstBmp,int width,int height,int nWidth,int nHeight); byte *changeRGB(byte *srcBmp,int width,int height,int *lwidth,int *lheight,float f); void strBmp(struct Bmp1 *img,byte *temp); void guiyi(struct Bmp1 *img); void readstr(FILE *infile, byte *srcBmp); char *myitoa(int num, char *str, int radix); // 整数字符串转换。 void readmoban(char *path,struct Bmp1 *img2); void writebmp(const char *path,const char *name,byte *temp); int cmpstr(byte *src,byte *moban); void Hough(struct Bmp1 *img); void strout(struct Bmp1 *img); void edgesob8(byte *image,int width,int height); void edgesob4(byte *image,int width,int height);//4邻域 int hough(byte *srcBmp,int width,int height); void Dilation(byte *image,int width,int height,int type,int num); void RotateGray(byte *image,int width,int height, float iRotateAngle); byte *RotateRGB(byte *image, float iRotateAngle,int width,int height,int *lwidth,int *lheight); void xuanzhuan(struct Bmp1 *img1); byte *myMalloc(int num,const byte *bmp,int type); void guiyiRGB(struct Bmp1 *img1); void outtext(struct Bmp1 img1,int x,int y); int calstr(byte *srcBmp);