【opencv小应用】图片中的字符分割提取
来源:互联网 发布:java求绝对值函数 编辑:程序博客网 时间:2024/05/17 07:48
源图片
像这些图片的字符就比较好操作,每个字符都独立,不连在一起,所以轮廓检测最好了。
所以就有:
1.源图片转成单通道的灰阶图片
2.对灰度图像进行阈值操作得到二值图像
(对于一些手机拍的,背景色不是纯的话,可以用cvSmooth()平滑一下。)
二值化后的图片
3.轮廓检测(只获取最外层的)
4.遍历所有检测到的轮廓,用cvBoundingRect()得到每一个轮廓的外接矩形
找到的轮廓
5.抠它们出来,这步在上面的遍历中直接通过setROI方法进行提取。
最后的结果
下面是源码:
#include "stdafx.h"#include "cv.h"#include "highgui.h"#include "cxcore.h"int main(int argc, char* argv[]){ IplImage* imgSrc = cvLoadImage("D:\\4.jpg",CV_LOAD_IMAGE_COLOR); IplImage* img_gray = cvCreateImage(cvGetSize(imgSrc), IPL_DEPTH_8U, 1); cvCvtColor(imgSrc, img_gray, CV_BGR2GRAY); cvThreshold(img_gray, img_gray,100, 255,CV_THRESH_BINARY_INV);// CV_THRESH_BINARY_INV使得背景为黑色,字符为白色,这样找到的最外层才是字符的最外层 cvShowImage("ThresholdImg",img_gray); CvSeq* contours = NULL; CvMemStorage* storage = cvCreateMemStorage(0); // 上面源图片有瑕疵可以用腐蚀,膨胀来祛除 int count = cvFindContours(img_gray, storage, &contours,sizeof(CvContour),CV_RETR_EXTERNAL); printf("轮廓个数:%d",count); int idx = 0; char szName[56] = {0};int tempCount=0; for (CvSeq* c = contours; c != NULL; c = c->h_next) { CvRect rc =cvBoundingRect(c,0); // if () // { // continue; 这里可以根据轮廓的大小进行筛选// } cvDrawRect(imgSrc, cvPoint(rc.x, rc.y), cvPoint(rc.x + rc.width, rc.y + rc.height), CV_RGB(255, 0, 0)); IplImage* imgNo = cvCreateImage(cvSize(rc.width, rc.height), IPL_DEPTH_8U, 3); cvSetImageROI(imgSrc, rc); cvCopyImage(imgSrc, imgNo); cvResetImageROI(imgSrc); sprintf(szName, "wnd_%d", idx++); cvNamedWindow(szName); cvShowImage(szName, imgNo); //如果想切割出来的图像从左到右排序,或从上到下,可以比较rc.x,rc.y; cvReleaseImage(&imgNo); } cvNamedWindow("src"); cvShowImage("src", imgSrc); cvWaitKey(0); cvReleaseMemStorage(&storage); cvReleaseImage(&imgSrc); cvReleaseImage(&img_gray); cvDestroyAllWindows(); return 0; }
- 【opencv小应用】图片中的字符分割提取
- 图片中的字符分割提取(基于opencv)
- OpenCV 提取图片中的曲线
- python-opencv颜色提取分割
- opencv字符轮廓分割
- Opencv车牌字符分割
- 提取iphone应用中的png图片
- 基于opencv的车牌识别(三)车牌ROI提取,字符分割及识别
- 【OpenCV】一种基于阈值的图片中的文字分割
- OpenCV—图像分割中的分水岭算法原理与应用
- opencv 垂直投影分割字符
- python小练习:Opencv中将图片转为字符画
- 【OpenCV】提取图片某一块
- opencv-图片特征点提取
- 【OpenCV】图片几何特征提取
- 提取ipa中的图片
- 正则表达式应用:分割字符
- 利用OPENCV写的从视频中提取图片样本的小程序
- apache源码安装
- C++ vector 排序
- jquery ajax 方法及各参数详解
- 小样:内存管理系统实现,提供可持久化功能
- 思维导图软件MindManager:如何使用模版
- 【opencv小应用】图片中的字符分割提取
- acm--二维数组中的鞍点【数组】
- 黑马程序员--代码块小知识总结
- Elicpse Git OSChina
- Eclipse修改编码
- 关于{Get;Set;}的使用
- C/C++的变量,类的作用域
- 获取安卓程序(apk)的源代码
- win8 eclipse java.lang.reflect.invocationTargetException