opencv 学习笔记(十四) grabCut
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相关推荐
- OpenCV学习笔记(四十六)——FAST特征点检测features2D OpenCV学习笔记(四十七)——VideoWriter生成视频流highgui OpenCV学习笔记(四十八)——PCA算
OpenCV学习笔记(四十六)--FAST特征点检测features2D 特征点检测和匹配是计算机视觉中一个很有用的技术.在物体检测,视觉跟踪,三维常年关键等领域都有很广泛的应用.这一次先介绍特征点检 ...
- OpenCV学习笔记(四十一)——再看基础数据结构core OpenCV学习笔记(四十二)——Mat数据操作之普通青年、文艺青年、暴力青年 OpenCV学习笔记(四十三)——存取像素值操作汇总co
OpenCV学习笔记(四十一)--再看基础数据结构core 记得我在OpenCV学习笔记(四)--新版本的数据结构core里面讲过新版本的数据结构了,可是我再看这部分的时候,我发现我当时实在是看得太马 ...
- OpenCV学习笔记(四十二)——Mat数据操作之普通青年、文艺青年、暴力青年
首先还是要感谢箫鸣朋友在我<OpenCV学习笔记(四十)--再谈OpenCV数据结构Mat详解>的留言,告诉我M.at<float>(3, 3)在Debug模式下运行缓慢,推荐 ...
- OpenCV学习笔记(十二)——图像分割与提取
在图像处理的过程中,经常需要从图像中将前景对象作为目标图像分割或者提取出来.例如,在视频监控中,观测到的是固定背景下的视频内容,而我们对背景本身并无兴趣,感兴趣的是背景中出现的车辆.行人或者其他对象. ...
- OpenCV学习(二十四 ):角点检测(Corner Detection):cornerHarris(),goodFeatureToTrack()
OpenCV学习(二十四 ):角点检测(Corner Detection):cornerHarris(),goodFeatureToTrack() 参考博客: Harris角点检测原理详解 Harri ...
- OpenCV学习笔记(四):XML,YAML(.txt,.doc)文件读写操作
OpenCV学习笔记(四):XML,YAML(.txt,.doc)文件读写操作 一.Write_XML_and_YAML_File(写入XML) #include <opencv2/opencv ...
- 吴恩达《机器学习》学习笔记十四——应用机器学习的建议实现一个机器学习模型的改进
吴恩达<机器学习>学习笔记十四--应用机器学习的建议实现一个机器学习模型的改进 一.任务介绍 二.代码实现 1.准备数据 2.代价函数 3.梯度计算 4.带有正则化的代价函数和梯度计算 5 ...
- Polyworks脚本开发学习笔记(十四)-WORKSPACE信息读取及管理
Polyworks脚本开发学习笔记(十四)-WORKSPACE信息读取及管理 Polyworks的工作任务存储分为工作区和项目两级,通过WORKSPACE命令获取工作任务信息,实现更好的任务管理. 下 ...
- 检测单击鼠标左键并拖动的消息_计算机视觉OpenCV学习笔记(四):关于鼠标的相关事件函数...
(7)把鼠标当画笔 本篇目标: 学会使用OpenCV中的鼠标处理的相关事件,事件回调函数怎么去定义,参数有哪些,以及如何注册鼠标监听事件. 7.1 .1 回调函数的定义: 1 def name(eve ...
- OpenCV学习笔记-图像分割之GrabCut
一.原理 GrabCut是graph cut的改进版,是迭代的graph cut.该算法利用了图像中的纹理(颜色)信息和边界(反差)信息,只要小量的用户交互操作即可得到比较好的分割效果. 计算原理参考 ...
最新文章
- inline函数包涵static变量,调用时是否会有多份拷贝
- 自己也遇到了-db_recovery_file_dest_size 修改大一点
- 海量数据持久层解决方案_爱数AnyBackup重磅发布海量非结构化数据超可用解决方案...
- 算法应用三:【图像分割】+【边缘检测】canny边缘检测--冈萨雷斯--《数字图像处理》
- jquery二级联动select
- tp-03 模板显示
- 论文精读—XGBoost paper
- 阿里云Centos6.6安装配置docker
- 【系列二之图像处理系列】波形处理(3)
- unity3d游戏3d横版格斗游戏完整项目源码分享
- VMware中创建虚拟机并安装Linux操作系统教程
- Android检测wifi信号强度,检测网络是否通畅
- 【Python】监控GPU温度
- 【腾讯TMQ】众测白皮书
- Flutter 新版Navigator (一)
- PHP 中的 cURL 爬虫实战基础
- 提升你的外国服务器网站国内访问速度~
- VM中的Ubuntu能ping通外网浏览器不能上网
- 运筹说 第29期 | 对偶理论与灵敏度分析—影子价格
- 产品DAU下降如何分析