opencv对手写数字进行无黏连切割
//src:待分割的二值图,最大值为255
//segMat:分割好的每个图片
//算法:判断连通域,有几个连通域就会分割成几个子图片
//用途:手写数字识别中进行无黏连数字的分割
void getConnectedDomain(cv::Mat &src, vector<cv::Mat>& segMat)//segMat为最终结果,存放分割好的每个数字
{
int img_row = src.rows;
int img_col = src.cols;
cv::Mat flag = cv::Mat::zeros(cv::Size(img_col, img_row), CV_8UC1);//标志矩阵,为0则当前像素点未访问过 for (int i = ; i < img_row; i++)
{
for (int j = ; j < img_col; j++)
{
if (src.ptr<uchar>(i)[j] == && flag.ptr<uchar>(i)[j] == )
{
cv::Mat subMat = cv::Mat::zeros(cv::Size(img_col, img_row), CV_8UC1);//表明子图
stack<cv::Point2f> cd;
cd.push(cv::Point2f(j, i));
flag.ptr<uchar>(i)[j] = ;
subMat.ptr<uchar>(i)[j] = ; while (!cd.empty())
{
cv::Point2f tmp = cd.top(); cd.pop();
cv::Point2f p[];//邻域像素点,这里用的四邻域
p[] = cv::Point2f(tmp.x - > ? tmp.x - : , tmp.y);
p[] = cv::Point2f(tmp.x + < img_col - ? tmp.x + : img_row - , tmp.y);
p[] = cv::Point2f(tmp.x, tmp.y - > ? tmp.y - : );
p[] = cv::Point2f(tmp.x, tmp.y + < img_row - ? tmp.y + : img_row - );
for (int m = ; m < ; m++)
{
int x = p[m].y;
int y = p[m].x;
if (src.ptr<uchar>(x)[y] == && flag.ptr<uchar>(x)[y] == )//如果未访问,则入栈,并标记访问过该点
{
cd.push(p[m]);
flag.ptr<uchar>(x)[y] = ;
subMat.ptr<uchar>(x)[y] = ;
}
}
}
segMat.push_back(subMat);
}
}
}
}
opencv对手写数字进行无黏连切割的更多相关文章
- opencv2.4.13+python2.7学习笔记--使用 knn对手写数字OCR
阅读对象:熟悉knn.了解opencv和python. 1.knn理论介绍:算法学习笔记:knn理论介绍 2. opencv中knn函数 路径:opencv\sources\modules\ml\in ...
- 机器学习实战基础(二十七):sklearn中的降维算法PCA和SVD(八)PCA对手写数字数据集的降维
PCA对手写数字数据集的降维 1. 导入需要的模块和库 from sklearn.decomposition import PCA from sklearn.ensemble import Rando ...
- OpenCV手写数字字符识别(基于k近邻算法)
摘要 本程序主要参照论文,<基于OpenCV的脱机手写字符识别技术>实现了,对于手写阿拉伯数字的识别工作.识别工作分为三大步骤:预处理,特征提取,分类识别.预处理过程主要找到图像的ROI部 ...
- TF之RNN:基于顺序的RNN分类案例对手写数字图片mnist数据集实现高精度预测—Jason niu
import tensorflow as tf from tensorflow.examples.tutorials.mnist import input_data mnist = input_dat ...
- 在opencv3中实现机器学习算法之:利用最近邻算法(knn)实现手写数字分类
手写数字digits分类,这可是深度学习算法的入门练习.而且还有专门的手写数字MINIST库.opencv提供了一张手写数字图片给我们,先来看看 这是一张密密麻麻的手写数字图:图片大小为1000*20 ...
- 深度学习之PyTorch实战(3)——实战手写数字识别
上一节,我们已经学会了基于PyTorch深度学习框架高效,快捷的搭建一个神经网络,并对模型进行训练和对参数进行优化的方法,接下来让我们牛刀小试,基于PyTorch框架使用神经网络来解决一个关于手写数字 ...
- 手写数字识别 ----Softmax回归模型官方案例注释(基于Tensorflow,Python)
# 手写数字识别 ----Softmax回归模型 # regression import os import tensorflow as tf from tensorflow.examples.tut ...
- NN:神经网络算法进阶优化法,进一步提高手写数字识别的准确率—Jason niu
上一篇文章,比较了三种算法实现对手写数字识别,其中,SVM和神经网络算法表现非常好准确率都在90%以上,本文章进一步探讨对神经网络算法优化,进一步提高准确率,通过测试发现,准确率提高了很多. 首先,改 ...
- KNN分类算法实现手写数字识别
需求: 利用一个手写数字“先验数据”集,使用knn算法来实现对手写数字的自动识别: 先验数据(训练数据)集: ♦数据维度比较大,样本数比较多. ♦ 数据集包括数字0-9的手写体. ♦每个数字大约有20 ...
随机推荐
- Vue学习记录(一)
一.引入js文件(直接采用CDN): http://cdnjs.cloudflare.com/ajax/libs/vue/1.0.26/vue.min.js 二.简单实例: (1)HTML代码: &l ...
- Linux架构分布式集群之基础篇
部署linux环境,安装jdk 1.安装rar命令行 wget http://www.rarlab.com/rar/rarlinux-x64-4.2.0.tar.gz由于在此目录下解压rar后linu ...
- python学习之----遍历单个域名和随机数
实现“维基百科六度分隔理论”的查找方法.也就是说,我们要实现从埃里克 · 艾德尔的词条页面(https://en.wikipedia.org/wiki/Eric_Idle)开始,经过最少的链接点击次数 ...
- jquery前期总结,及实例
一.元素查找 1.选择器 id=d------------------------------------------>$("#d") class=c1----------- ...
- 安装hyperledger fabric V1.0.0-beta
安装文档位置: https://github.com/hyperledger/fabric fabric代码托管地址 https://hyperledger-fabric.readthedoc ...
- Ubuntu 14.04 配置OpenCv 2.4.9
安装工具 g++ 链接:http://www.cnblogs.com/LQLin168/p/6844593.html 下载OpenCv 2.4.9(官网地址):http://opencv.org/ ...
- 重识linux-linux主机上的用户信息传递
1 查询用户 w,who,last,lastlog 1)在线用户查询 w ,who 2)账号最近的登录时间 last lastlog 2 用户对谈 write,mesg,wall 1)write ...
- 38.spiderkeeper的配置
配置spiderkeeper管理scrapy爬虫 1.安装所需文件包pip install spiderkeeper pip install scrapyd pip install scrapy_cl ...
- java 常用第3方工具
https://www.cnblogs.com/chenpi/p/5608628.html#_label4
- des加密delphi与c#
des加密delphi与c# C#默认是CBC,PKCS7