vector<IplImage*> mycvCharSegment(IplImage* image)
{ //此函数利用OpenCV中的cvFindContours找出字符的轮廓后进行字符分割,包括汉字的合并处理,但是要求二值化的图像轮廓清晰
vector<IplImage*> characters; //存储分割出来的字符的图像头
IplImage* smoothImg = cvCreateImage(cvGetSize(image), IPL_DEPTH_8U, 1);
cvSmooth(image, smoothImg, CV_MEDIAN, 3, 3, 0, 0);
/*cvNamedWindow("Smooth", CV_WINDOW_AUTOSIZE);
cvShowImage("Smooth", smoothImg);*/
IplImage* contoursImg = cvCreateImage(cvGetSize(image), IPL_DEPTH_8U, 1);
cvCopy(smoothImg,contoursImg);
CvSeq* contours = NULL;
CvMemStorage* storage = cvCreateMemStorage(0);
int count = cvFindContours(smoothImg, storage, &contours, sizeof(CvContour), CV_RETR_EXTERNAL);
vector<CvRect> rcs;
vector<CvRect> comrcs;
for ( CvSeq* c = contours; c != NULL; c = c->h_next )
{
CvRect rect = cvBoundingRect(c, 0);
rcs.push_back(rect);
}
sort(rcs.begin(), rcs.end(),
【OpenCV】基于轮廓的字符分割
最新推荐文章于 2024-08-08 07:22:52 发布
这段代码展示了如何使用OpenCV的cvFindContours函数来检测字符轮廓,并进行字符分割,特别是处理汉字的合并。首先对图像进行平滑处理,然后找到外部轮廓,通过排序和比较相邻矩形来合并可能的字符。最后,对每个字符区域创建新的图像并将其添加到结果向量中。
摘要由CSDN通过智能技术生成