我用来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();
}
提前致谢!!!