在进行数码管识别中,出现了4识别成5或7的情况,但是对于4与5和7,在纵横灰度直方图上是明显不同的,所以应该是图像预处理的问题。是因为从相机读出的图像是翻转的,进行缩放的时候出现了差错。
从相机读取的原始图片为(大小为2592*1944):
由于图片的像素很高,完全能够满足清晰度的要求,同时为了节省程序执行的时间,所以在后面的预处理之前,先进行了一次图片的缩放,缩放为了400*480,这个缩放比例是根据后面预处理之前的图片比例(200*240)定的,但是前面没有考虑到图像没有反转正过来,就直接缩放为了400*480。缩放之后的图片为:
所以横纵向的比例完全调转过来了,这样就导致了字符的扭曲,导致了识别字符的错误。修改也比较简单,将sz.width=400,sz.height=480的数值对调一下
IplImage* desc;
CvSize sz;
sz.width =480;
sz.height =400;
desc = cvCreateImage(sz,iplImage->depth,iplImage->nChannels);
cvResize(iplImage,desc,CV_INTER_CUBIC);