grabCut

  • 前言
  • 一、grabCut函数
  • 二、compare函数
  • 三、代码

前言

grabCut算法利用了图像中的纹理(颜色)信息和边界(反差)信息,只用少量的用户交互操作,即可得到比较好的分割结果,和分水岭顺丰比较相似,但是计算速度比较慢,得到的结果比较精确,用法:输入一幅图片并对一些像素做属于背景或属于前景的标记,算法会根据这个局部标记计算出整个图像中前景和背景的分割线。


一、grabCut函数

void grabCut(InputArray img, InputOutputArray mask, Rect rect,InputOutputArray bgdModel, InputOutputArray fgdModel,int iterCount, int mode = GC_EVAL);img 输入图像mask 输出掩码rect 用户选择的前景矩形区域bgdModel 输出背景图像fgdModel 输出前景图像iterCount 迭代次数mode 用于指示函数执行什么操作

二、compare函数

compare函数主要用于两个图像之间进行逐像素的比较

void compare(InputArray src1, InputArray src2, OutputArray dst, int cmpop);src1 原始图像1src2原始图像2dst 结果图像cmpop 操作类型

三、代码

#include<iostream>
#include<opencv.hpp>
using namespace std;
using namespace cv;int main()
{Mat img1;img1 = imread("test2.jpg");imshow("原图", img1);Rect rect(84, 84, 406, 318);Mat img2, bg, fg;grabCut(img1, img2, rect, bg, fg,1,GC_INIT_WITH_RECT);compare(img2, GC_PR_FGD, img2, CMP_EQ);imshow("img2", img2);Mat img3(img1.size(), CV_8UC3, Scalar(255, 255, 255));img1.copyTo(img3, img2);imshow("img3", img3);waitKey(0);
}

效果图:

opencv 学习笔记(十四) grabCut相关推荐

  1. OpenCV学习笔记(四十六)——FAST特征点检测features2D OpenCV学习笔记(四十七)——VideoWriter生成视频流highgui OpenCV学习笔记(四十八)——PCA算

    OpenCV学习笔记(四十六)--FAST特征点检测features2D 特征点检测和匹配是计算机视觉中一个很有用的技术.在物体检测,视觉跟踪,三维常年关键等领域都有很广泛的应用.这一次先介绍特征点检 ...

  2. OpenCV学习笔记(四十一)——再看基础数据结构core OpenCV学习笔记(四十二)——Mat数据操作之普通青年、文艺青年、暴力青年 OpenCV学习笔记(四十三)——存取像素值操作汇总co

    OpenCV学习笔记(四十一)--再看基础数据结构core 记得我在OpenCV学习笔记(四)--新版本的数据结构core里面讲过新版本的数据结构了,可是我再看这部分的时候,我发现我当时实在是看得太马 ...

  3. OpenCV学习笔记(四十二)——Mat数据操作之普通青年、文艺青年、暴力青年

    首先还是要感谢箫鸣朋友在我<OpenCV学习笔记(四十)--再谈OpenCV数据结构Mat详解>的留言,告诉我M.at<float>(3, 3)在Debug模式下运行缓慢,推荐 ...

  4. OpenCV学习笔记(十二)——图像分割与提取

    在图像处理的过程中,经常需要从图像中将前景对象作为目标图像分割或者提取出来.例如,在视频监控中,观测到的是固定背景下的视频内容,而我们对背景本身并无兴趣,感兴趣的是背景中出现的车辆.行人或者其他对象. ...

  5. OpenCV学习(二十四 ):角点检测(Corner Detection):cornerHarris(),goodFeatureToTrack()

    OpenCV学习(二十四 ):角点检测(Corner Detection):cornerHarris(),goodFeatureToTrack() 参考博客: Harris角点检测原理详解 Harri ...

  6. OpenCV学习笔记(四):XML,YAML(.txt,.doc)文件读写操作

    OpenCV学习笔记(四):XML,YAML(.txt,.doc)文件读写操作 一.Write_XML_and_YAML_File(写入XML) #include <opencv2/opencv ...

  7. 吴恩达《机器学习》学习笔记十四——应用机器学习的建议实现一个机器学习模型的改进

    吴恩达<机器学习>学习笔记十四--应用机器学习的建议实现一个机器学习模型的改进 一.任务介绍 二.代码实现 1.准备数据 2.代价函数 3.梯度计算 4.带有正则化的代价函数和梯度计算 5 ...

  8. Polyworks脚本开发学习笔记(十四)-WORKSPACE信息读取及管理

    Polyworks脚本开发学习笔记(十四)-WORKSPACE信息读取及管理 Polyworks的工作任务存储分为工作区和项目两级,通过WORKSPACE命令获取工作任务信息,实现更好的任务管理. 下 ...

  9. 检测单击鼠标左键并拖动的消息_计算机视觉OpenCV学习笔记(四):关于鼠标的相关事件函数...

    (7)把鼠标当画笔 本篇目标: 学会使用OpenCV中的鼠标处理的相关事件,事件回调函数怎么去定义,参数有哪些,以及如何注册鼠标监听事件. 7.1 .1 回调函数的定义: 1 def name(eve ...

  10. OpenCV学习笔记-图像分割之GrabCut

    一.原理 GrabCut是graph cut的改进版,是迭代的graph cut.该算法利用了图像中的纹理(颜色)信息和边界(反差)信息,只要小量的用户交互操作即可得到比较好的分割效果. 计算原理参考 ...

最新文章

  1. inline函数包涵static变量,调用时是否会有多份拷贝
  2. 自己也遇到了-db_recovery_file_dest_size 修改大一点
  3. 海量数据持久层解决方案_爱数AnyBackup重磅发布海量非结构化数据超可用解决方案...
  4. 算法应用三:【图像分割】+【边缘检测】canny边缘检测--冈萨雷斯--《数字图像处理》
  5. jquery二级联动select
  6. tp-03 模板显示
  7. 论文精读—XGBoost paper
  8. 阿里云Centos6.6安装配置docker
  9. 【系列二之图像处理系列】波形处理(3)
  10. unity3d游戏3d横版格斗游戏完整项目源码分享
  11. VMware中创建虚拟机并安装Linux操作系统教程
  12. Android检测wifi信号强度,检测网络是否通畅
  13. 【Python】监控GPU温度
  14. 【腾讯TMQ】众测白皮书
  15. Flutter 新版Navigator (一)
  16. PHP 中的 cURL 爬虫实战基础
  17. 提升你的外国服务器网站国内访问速度~
  18. VM中的Ubuntu能ping通外网浏览器不能上网
  19. 运筹说 第29期 | 对偶理论与灵敏度分析—影子价格
  20. 产品DAU下降如何分析

热门文章

  1. Android 了解intent
  2. 1.NoSQL之Redis配置与基础命令
  3. JS箭头函数用户和箭头函数转成普通函数处理方法
  4. 基于python爬虫天气象大数据可视化分析系统
  5. Oracle的学习心得和知识总结(十八)|Oracle数据库性能压测工具swingbench的安装和使用及AWR ASH ADDM报告生成
  6. 太仓有培训计算机考证的吗
  7. HTML5 plus初步了解
  8. 怎压缩html文件夹,如何利用koala压缩合并js文件?
  9. MT4 EA编程实例
  10. Java学习——算法(罗马数字转整数)