2

我用来cvFindContours在车牌中查找数字段,效果很好。之后,我想将其转换为灰度(用于 OCR),我使用cvCvtColor但它让我很困惑。

板图: 在此处输入图像描述

我得到的一些数字图像(之后cvCvtColor):

在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

这太奇怪了,有些工作正常,但有些不行。任何人都可以帮助我吗?

哦,这是我的代码:

CvSeq contours = new CvSeq();
                IplImage contour_img = cvCreateImage( cvGetSize( plateImageGrey ), IPL_DEPTH_8U, 1);
                cvZero( contour_img );
                CvMemStorage storage = CvMemStorage.create();                   
                cvFindContours( plateImageGrey, storage, contours, Loader.sizeof(CvContour.class), CV_RETR_LIST, CV_CHAIN_APPROX_SIMPLE );              
                while(contours != null)
                {
                    if(CV_IS_SEQ_CONTOUR(contours))
                    {
                        cvDrawContours( contour_img, contours, cvScalarAll(255), cvScalarAll(255), CV_C, CV_C, CV_C );
                        CvRect  boundingRect = cvBoundingRect(contours,1); 
                        if(((boundingRect.height()/boundingRect.width()) >=  2.0) && ((boundingRect.height()/boundingRect.width()) <=  3.0) && (area >= 1000))
                        {                           
                            CvRect cr = new CvRect(boundingRect.x() - 5 , boundingRect.y() - 5, boundingRect.width() + 10, boundingRect.height() + 10);                             
                            cvSetImageROI(plateImage, cr);                      
                            IplImage charImage = cvCreateImage(cvGetSize(plateImage), plateImage.depth(), plateImage.nChannels());
                            cvCopy(plateImage, charImage);
                            cvResetImageROI(plateImage);

                            IplImage charImageGrey = cvCreateImage( cvGetSize( charImage ), IPL_DEPTH_8U, 1);
                            cvCvtColor( charImage, charImageGrey, CV_BGRA2GRAY);

                            Bitmap charImageBitmap = Bitmap.createBitmap(charImageGrey.width(), charImageGrey.height(), Bitmap.Config.ALPHA_8);
                            charImageBitmap.copyPixelsFromBuffer(charImageGrey.getByteBuffer());
                            charImageBitmap = charImageBitmap.copy(Bitmap.Config.ARGB_8888, true);
                        }
                    }
                    contours = contours.h_next();           
                }

提前致谢!!!

4

0 回答 0