int bwLabel(const Mat& imgBw, Mat& imgLabeled) {
Mat imgClone = Mat(imgBw.rows + , imgBw.cols + , imgBw.type(), Scalar());
imgBw.copyTo(imgClone(Rect(, , imgBw.cols, imgBw.rows))); imgLabeled.create(imgClone.size(), imgClone.type());
imgLabeled.setTo(Scalar::all()); vector<vector<Point>>contours;
vector<Vec4i>hierarchy;
findContours(imgClone, contours, hierarchy, CV_RETR_CCOMP, CV_CHAIN_APPROX_NONE); vector<int>contoursLabel(contours.size(), );
int numlab = ; for (vector<vector<Point>>::size_type i = ; i < contours.size(); i++) {
if (hierarchy[i][] >= ) {
continue;
}
for (vector<Point>::size_type k = ; k != contours[i].size(); k++) {
//imgLabeled.at<uchar>(contours[i][k].y, contours[i][k].x) = numlab;
*(imgLabeled.data + imgLabeled.step[] * contours[i][k].y + imgLabeled.step[] * contours[i][k].x) = numlab;
}
numlab++;
}
for (int i = ; i < imgLabeled.rows; i++) {
for (int j = ; j < imgLabeled.cols; j++) {
//if (imgClone.at<uchar>(i, j) != 0 && imgLabeled.at<uchar>(i, j) == 0)
//{
// imgLabeled.at<uchar>(i, j) = imgLabeled.at<uchar>(i, j - 1);
//}
if (*(imgClone.data + imgClone.step[] * i + imgClone.step[] * j) != && *(imgLabeled.data + imgLabeled.step[] * i + imgLabeled.step[] * j) == ) {
*(imgLabeled.data + imgLabeled.step[] * i + imgLabeled.step[] * j) = *(imgLabeled.data + imgLabeled.step[] * i + imgLabeled.step[] * (j - ));
}
}
}
imgLabeled = imgLabeled(Rect(, , imgBw.cols, imgBw.rows)).clone();
return numlab - ;
}

opencv bwlabel的更多相关文章

  1. Python实现MATLAB中的 bwlabel函数

    最近做验证码识别,原本用MATLAB已经实现的整个识别模型,不过代码要部署在Linux服务器上还是需要用另外的语言实现,于是决定用Python + OpenCV来实现. bwlabel函数的作用是检测 ...

  2. opencv在图像显示中文

    在图像定位和模式识别时,经常需要把结果标注到图片上,标注内容可以是数字字母.矩形框等(opencv支持的)或者是中文汉字(借助freetype). 1.显示数字/矩形框 #include <op ...

  3. opencv中Mat与IplImage,CVMat类型之间转换

    opencv中对图像的处理是最基本的操作,一般的图像类型为IplImage类型,但是当我们对图像进行处理的时候,多数都是对像素矩阵进行处理,所以这三个类型之间的转换会对我们的工作带来便利. Mat类型 ...

  4. opencv源码:cascadedetect

    级联分类器检测类CascadeClassifier,提供了两个重要的方法: CascadeClassifier cascade_classifier; cascade_classifier.load( ...

  5. 基于OpenCV的车辆检测与追踪的实现

    最近老师布置了一个作业,是做一个基于视频的车辆检测与追踪,用了大概两周的时间做了一个简单的,效果不是很理想,但抑制不住想把自己的一些认识写下来,这里就把一些网络上的博客整理一下分享给大家,希望帮助到大 ...

  6. OpenCV人脸识别Eigen算法源码分析

    1 理论基础 学习Eigen人脸识别算法需要了解一下它用到的几个理论基础,现总结如下: 1.1 协方差矩阵 首先需要了解一下公式: 共公式可以看出:均值描述的是样本集合的平均值,而标准差描述的则是样本 ...

  7. OpenCV人脸识别LBPH算法源码分析

    1 背景及理论基础 人脸识别是指将一个需要识别的人脸和人脸库中的某个人脸对应起来(类似于指纹识别),目的是完成识别功能,该术语需要和人脸检测进行区分,人脸检测是在一张图片中把人脸定位出来,完成的是搜寻 ...

  8. OpenCV模板匹配算法详解

    1 理论介绍 模板匹配是在一幅图像中寻找一个特定目标的方法之一,这种方法的原理非常简单,遍历图像中的每一个可能的位置,比较各处与模板是否“相似”,当相似度足够高时,就认为找到了我们的目标.OpenCV ...

  9. android studio 使用 jni 编译 opencv 完整实例 之 图像边缘检测!从此在andrid中自由使用 图像匹配、识别、检测

    目录: 1,过程感慨: 2,运行环境: 3,准备工作: 4,编译 .so 5,遇到的关键问题及其解决方法 6,实现效果截图. (原创:转载声明出处:http://www.cnblogs.com/lin ...

随机推荐

  1. 编译Android系统源码和内核源码

    [日期:2016-01-11] 来源:Linux社区  作者:jiangwei [字体:大 中 小]     把我之前编译Android系统源码和内核源码的过程记录一下,因为这个过程真的是受益匪浅,看 ...

  2. 畜禽免疫系统使用LODOP打印

    <div class="btn_box"> <asp:Button ID="btnPrint" Text="预览并打印" ...

  3. 点读系列《jmeter官方用户手册》

    官网:http://jmeter.apache.org/usermanual/ 说明:十八元件.十九属性.二十函数,涉及清单内容暂未仔细阅读,个人觉得一是仅供使用参考,二是适合单独写文章来解读 一.让 ...

  4. springCloud的使用01-----服务的注册和发现

    1 搭建eureka注册服务器 1.1 创建springboot项目,导入相应的jar包依赖 <project xmlns="http://maven.apache.org/POM/4 ...

  5. java selenium爬取验证图片是否加载完成

    爬虫任务里发现有部分图片没有加载完成就进行文件流上传,导致有一些图片是空白,需要判断一下: 首选获取image标签元素: WebElement image = driver.findElement(B ...

  6. ionic2(3) 密码键盘组件 ionic2-pincode-input 使用

    1.效果展示: 2.安装: npm install ionic2-pincode-input --save 3.app.module.ts配置 app.module.ts import { NgMod ...

  7. segment fault 定位 与 远程 gdb

    远程 GDB  首先 ,Target 为 ARM开发板 (IP =  192.168.1.200),HOST 为 Ubuntu 14.04 虚拟机 (IP = 192.168.1.4) 1. 下载  ...

  8. Async Clipboard AP

    转自奇舞周刊,个人学习记录,侵权删 编者按:本文作者李松峰,资深技术图书译者,翻译出版过40余部技术及交互设计专著,现任360奇舞团高级前端开发工程师,360前端技术委员会委员.W3C AC代表 如果 ...

  9. ubuntu docker 安装 oracle

    1.ubuntu 安装docker sudo apt-get update sudo apt-get docker.io 2.docker下载oracle镜像 sudo docker pull wna ...

  10. 友善之臂arm9、 smart210监控版本,烧写系统

    第一次接触嵌入式开发,就拿210练手了,第一天折腾,先烧系统. 准备:板子,8GB或者以上的SD卡,网上找下minitools以及系统小红帽,Android或者ubuntu,debian都可以.[ub ...