前景提取、去除背景(selectROI+Grabcut)
来源:互联网 发布:seo全套视频教程 编辑:程序博客网 时间:2024/06/06 08:55
前几天看到别人数学建模题目是前景提取,想到很早之前试过的grabcut,所以来放个demo,2333
惯例先放效果 //必须是三通道图片
两个函数:
1.selectROI 【需要配置Opencv的contribute模块】、、主要作用是获取矩形框,可自行写其他
第一个参数为输入图片,第二个参数为是否从中心开始选取矩形
2.grabCut函数 //输入必须是三通道的彩色图
详细用法如下:
/*参考:http://blog.csdn.net/zouxy09/article/details/8535087****参数说明:image——待分割的源图像,必须是8位3通道(CV_8UC3)图像,在处理的过程中不会被修改;mask——掩码图像,如果使用掩码进行初始化,那么mask保存初始化掩码信息;在执行分割的时候,也可以将用户交互所设定的前景与背景保存到mask中,然后再传入grabCut函数;在处理结束之后,mask中会保存结果。mask只能取以下四种值:GCD_BGD(=0),背景;GCD_FGD(=1),前景;GCD_PR_BGD(=2),可能的背景;GCD_PR_FGD(=3),可能的前景。如果没有手工标记GCD_BGD或者GCD_FGD,那么结果只会有GCD_PR_BGD或GCD_PR_FGD;rect——用于限定需要进行分割的图像范围,只有该矩形窗口内的图像部分才被处理;bgdModel——背景模型,如果为null,函数内部会自动创建一个bgdModel;bgdModel必须是单通道浮点型(CV_32FC1)图像,且行数只能为1,列数只能为13x5;fgdModel——前景模型,如果为null,函数内部会自动创建一个fgdModel;fgdModel必须是单通道浮点型(CV_32FC1)图像,且行数只能为1,列数只能为13x5;iterCount——迭代次数,必须大于0;mode——用于指示grabCut函数进行什么操作,可选的值有:GC_INIT_WITH_RECT(=0),用矩形窗初始化GrabCut;GC_INIT_WITH_MASK(=1),用掩码图像初始化GrabCut;GC_EVAL(=2),执行分割。*/
下面就是简单粗暴的代码了,233
//Interactive Foreground Extraction using Iterated Graph Cuts#include <opencv2/opencv.hpp>#include <opencv2/tracking.hpp>#include <iostream> using namespace std;using namespace cv;int main(){Mat image = imread("test.jpg");Mat mask; //框选前景所在区域bool fromCenter = false;Rect2d r = selectROI(image,fromCenter);Mat bgModel, fgModel; // 模型(内部使用) grabCut(image,mask, r, bgModel, fgModel, 1, cv::GC_INIT_WITH_RECT);// 得到可能为前景的像素 compare(mask, cv::GC_PR_FGD, mask, cv::CMP_EQ);imshow("mask", mask);// 生成输出图像 Mat foreground(image.size(), CV_8UC3, cv::Scalar(255, 255, 255));image.copyTo(foreground, mask); // 复制背景数据 // 输出前景图像结果 cv::imshow("提取后", foreground);cvWaitKey(0); //等待退出 return 0;}
//口腔溃疡好严重,我去多吃点草了……
阅读全文
0 0
- 前景提取、去除背景(selectROI+Grabcut)
- GrabCut算法提取前景物体
- python opencv入门 使用 GrabCut 交互式提取前景(30)
- 使用GrabCut算法提取前景物体
- opencv使用GrabCut算法提取前景物体
- 背景减除-提取前景
- OpenCV3.0 Examples学习笔记(10)-grabcut.cpp-grabcut函数实现人机交互高效分割图像前景背景
- opencv-使用GrabCut提取背景图像
- Opencv 使用 GrabCut 算法进行交互式前景提取
- OpenCV2编程手册笔记之 5.6GrabCut提取前景
- opencv-使用GrabCut算法进行交互式前景提取
- 平均背景法提取前景
- 背景差分法实现前景提取
- OpenCV_(Using GrabCut extract the foreground object) 使用 GrabCut 算法提取前景物体
- Opencv 自带提取前景(背景建模)
- 前景提取/背景减除法综述
- opencv3 背景建模提取前景图像
- 利用OpenCV的Grabcut()函数实现图像的前景与背景的分割-并对Grabcut()作详细介绍
- java实现二叉树常见遍历算法
- Linux驱动中的 wait_event_interruptible 与 wake_up_interruptible 深度理解
- Spring Boot应用的健康监控
- APUE第九章笔记
- tablayout_viewpager
- 前景提取、去除背景(selectROI+Grabcut)
- HTTP请求方法及幂等性探究
- LeetCode#240 Search a 2D Matrix II
- CentOS 7 如何设置默认启动方式为命令行模式
- Snapdragon NPE SDK配置及用例
- Keytool类
- 必须不含字符 [子级], 因为该类型的内容类型为“仅元素”
- 探讨scrapy当中的pipeline何时获取item。
- 1.python是如何进行类型转换