// 识别字符.cpp : 定义控制台应用程序的入口点。
//
/*=========================================================================
名称:识别字符
时间:2013.08
说明:把图片上字符二值化
=========================================================================*/
#include "stdafx.h"
#include "cv.h"
#include "highgui.h"
#include "cxcore.h"
int _tmain(int argc, _TCHAR* argv[])
{
//-----声明图片指针与加载本图片-----//
IplImage *src, *dst, *src1;
src = cvLoadImage("1.jpg", 0); //加载待处理本地图片
dst = cvCreateImage(cvGetSize(src), src->depth, 1); //初始化输出图片指针
cvThreshold(src, dst, 105, 255, CV_THRESH_BINARY); //对输入灰度图片进行阀值操作得到二值图片
//-----对二值化后图片中不需要黑点去除-----//
{
cvSetImageROI(dst, cvRect(0, 0, 50, 450));
cvDilate(dst, dst, NULL, 6);
cvResetImageROI(dst);
cvSetImageROI(dst, cvRect(10, 280, 450, 50));
cvDilate(dst, dst, NULL, 6);
cvResetImageROI(dst);
cvSetImageROI(dst, cvRect(10, 0, 450, 40));
cvDilate(dst, dst, NULL, 6);
cvResetImageROI(dst);
}
//-----闭操作运算-----//
cvDilate(dst, dst, NULL, 1);
cvErode(dst, dst, NULL, 1);
//-----创建显示窗口与图片显示-----//
cvNamedWindow("src");
cvNamedWindow("dst");
cvShowImage("src", src);
cvShowImage("dst", dst);
cvSaveImage("1.jpg", dst);
cvWaitKey(0);
//-----销毁所有窗口与释放内存-----//
cvDestroyAllWindows();
cvReleaseImage(&src);
cvReleaseImage(&dst);
return 0;
}
原图与处理后图片: