OpenCV图像分割(1)图像分割函数grabCut()的使用

  • 操作系统:ubuntu22.04
  • OpenCV版本:OpenCV4.9
  • IDE:Visual Studio Code
  • 编程语言:C++11

算法描述

运行 GrabCut 算法。
该函数实现了 GrabCut 图像分割算法

OpenCV 中的 grabCut() 函数是一种用于图像分割的技术,它可以帮助用户从图像中分割出感兴趣的区域(ROI)。grabCut() 使用了一种基于图割(graph cut)的方法来进行分割,可以有效地将前景和背景分离。

函数原型

void cv::grabCut
(InputArray 	img,InputOutputArray 	mask,Rect 	rect,InputOutputArray 	bgdModel,InputOutputArray 	fgdModel,int 	iterCount,int 	mode = GC_EVAL 
)		

参数

  • 参数img 输入的8位3通道图像。
  • 参数mask 输入/输出的8位单通道掩码。当模式被设置为GC_INIT_WITH_RECT时,此掩码由函数初始化。其元素可以是GrabCutClasses中的某一种。
  • 参数rect 包含分割对象的ROI(感兴趣区域)。ROI之外的像素被标记为“明显的背景”。此参数仅在mode==GC_INIT_WITH_RECT时使用。
  • 参数bgdModel 用于背景模型的临时数组。在处理同一张图像期间请勿修改它。
  • 参数fgdModel 用于前景模型的临时数组。在处理同一张图像期间请勿修改它。
  • 参数iterCount 算法在返回结果前应该执行的迭代次数。注意,结果可以通过mode设置为GC_INIT_WITH_MASK或mode设置为GC_EVAL的进一步调用来优化。
  • 参数mode 操作模式,可以是GrabCutModes中的任意一种。

代码示例


#include <iostream>
#include <opencv2/opencv.hpp>int main()
{// 读取图像cv::Mat img = cv::imread( "/media/dingxin/data/study/OpenCV/sources/images/qiu.jpg" );if ( img.empty() ){std::cout << "Could not open or find the image!" << std::endl;return -1;}// 初始化掩码cv::Mat mask( img.size(), CV_8UC1, cv::Scalar::all( cv::GC_PR_BGD ) );// 选择一个矩形区域作为前景cv::Rect rect( 200, 200, 400, 400 );  // 以左上角坐标 (200, 200) 和宽度高度 (400, 400) 为例// 初始化背景和前景模型cv::Mat bgdModel, fgdModel;// 应用 grabCutcv::grabCut( img, mask, rect, bgdModel, fgdModel, 5, cv::GC_INIT_WITH_RECT );// 将掩码转换为可视化的结果cv::Mat segmented;segmented.create( img.size(), img.type() );  // 确保 segmented 与 img 具有相同的尺寸和类型// 确保 mask 和 segmented 的尺寸一致assert( mask.size() == img.size() );for ( int i = 0; i < mask.rows; ++i ){for ( int j = 0; j < mask.cols; ++j ){// 确保 i 和 j 不越界if ( i >= 0 && i < segmented.rows && j >= 0 && j < segmented.cols ){if ( mask.at< uchar >( i, j ) == cv::GC_PR_BGD || mask.at< uchar >( i, j ) == cv::GC_BGD ){segmented.at< cv::Vec3b >( i, j ) = cv::Vec3b( 0, 0, 0 );  // 黑色背景}else if ( mask.at< uchar >( i, j ) == cv::GC_FGD || mask.at< uchar >( i, j ) == cv::GC_PR_FGD ){segmented.at< cv::Vec3b >( i, j ) = img.at< cv::Vec3b >( i, j );  // 原始图像的前景}}}}// 显示结果cv::imshow( "Original Image", img );cv::imshow( "Segmented Image", segmented );cv::waitKey( 0 );return 0;
}

运行结果

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/149761.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

stable diffusion这个插件牛,高清【图片换脸】,高清【视频换脸】 一键完成!

前言 最近发现一个很不错的sdwebui的插件&#xff0c;不仅能完成图片换脸&#xff0c;还能进行视频换脸&#xff0c;而且效果比之前的 faceid和reactor要好很多&#xff0c;更像更高清&#xff0c;哈哈&#xff0c;废话不多说&#xff0c;直接上干货~插件是 easyPhoto&#xff…

今日早报 每日精选15条新闻简报 每天一分钟 知晓天下事 9月24日,星期二

每天一分钟&#xff0c;知晓天下事&#xff01; 2024年9月24日 星期二 农历八月廿二 1、 外卖新规征求意见&#xff1a;规范外卖满减、起送费等机制&#xff0c;剑指餐饮浪费。 2、 发改委&#xff1a;预计全年将实现200万辆低排放标准乘用车退出。 3、 商务部&#xff1a;中…

高通平台Android源码下载

1&#xff09;、打开&#xff1a;Android releases | CodeLinaro Wiki&#xff0c;选择相应的硬件版本Android系统 2&#xff09;、repo 源码 repo init --depth1 -u https://git.codelinaro.org/clo/la/platform/manifest.git -b release -m LA.UM.8.6.2.c31-03300-89xx.0.xm…

智算中心动环监控:构建高效、安全的数字基础设施@卓振思众

在当今快速发展的数字经济时代&#xff0c;智算中心作为人工智能和大数据技术的核心支撑设施&#xff0c;正日益成为各行业实现智能化转型的重要基石。为了确保这些高性能计算环境的安全与稳定&#xff0c;卓振思众动环监控应运而生&#xff0c;成为智算中心管理的重要组成部分…

论文复现| Free-Form Image Inpainting with Gated Convolution

论文地址具有上下文注意的生成图像修复 论文代码:GitHub 01配置环境 根据原文代码中read me中要求&#xff0c;进行环境配置以及包的安装。 Run 安装python3。 安装tensorflow(在1.3.0,1.4.0,1.5.0,1.6.0,1.7.0版本上进行了测试)。 安装tensorflow工具包neuralgym(运行pi…

【零基础入门AI:83%的文本推荐系统都在用的算法 TF-IDF】

什么是推荐系统&#xff1f; 在如今这个信息爆炸的时代&#xff0c;推荐系统是根据用户的信息或者行为&#xff0c;向用户推荐用户可能会感兴趣的内容。其中基于文本的推荐系统&#xff0c;比如搜索引擎&#xff0c;头条、微信这类资讯类应用的搜索功能&#xff0c;就是在一个…

图表示学习中的Transformer:Graphormer的突破

人工智能咨询培训老师叶梓 转载标明出处 在自然语言处理和计算机视觉等领域&#xff0c;Transformer架构已经成为主导选择。然而&#xff0c;在图级别的预测任务中&#xff0c;它的表现并不如主流的图神经网络&#xff08;GNN&#xff09;变体。这一现象引发了一个思考&#x…

轻松重置 MySQL 8.0 Root 密码的简便方法!

在Windows环境下安装MySQL数据后&#xff0c;如果忘记了 MySQL 8.0 的 root 密码&#xff0c;不必担心&#xff01;通过 --skip-grant-tables 和 named-pipe 模式登录后&#xff0c;只需几步简单的 SQL 命令即可重置密码&#xff1a;刷新权限表、修改密码、再刷新权限&#xff…

SpringBoot | Maven快速上手

文章目录 一、Maven1.1 Maven 简介&#xff1a;1.2 Maven 的核心功能&#xff1a;1.2.1 项目构建&#xff1a;1.2.2 依赖管理&#xff1a; 1.3 Maven 仓库&#xff1a;1.3.1 本地仓库&#xff1a;1.3.2 中央仓库&#xff1a;1.3.3 私服&#xff1a; 二、第一个 SpringBoot 程序…

数据处理与统计分析篇-day09-数据透视表与日期时间处理

一. 数据透视表 概述 数据透视表&#xff08;Pivot Table&#xff09;是一种交互式的表&#xff0c;可以进行某些计算&#xff0c;如求和与计数等。 所进行的计算与数据跟数据透视表中的排列有关。之所以称为数据透视表&#xff0c;是因为可以动态地改变它们的版面布置&#…

智慧水利采砂船在线监控平台:构建高效、智能的河道采砂监管体系

随着科技的不断发展&#xff0c;水利行业的智慧化转型也日益受到重视。智慧水利采砂船在线监控平台便是这一转型的重要成果之一。该平台主要服务于水政执法人员&#xff0c;针对取得河道采砂许可证的采砂公司及采砂船&#xff0c;实施在线自动监控&#xff0c;旨在提高监管效率…

OSError: [Errno 16] Device or resource busy: ‘.nfs*‘报错解决办法

目录 1 项目场景&问题描述&#xff1a;2 原因分析&#xff1a;2.1 问题背景&#xff1a; 3 解决方案&#xff1a;3.1 创建存放临时文件的目录3.2 使用该目录3.2.1 设置环境变量 TMPDIR3.2.2 运行时设置&#xff08;推荐&#xff09;3.2.3 代码中设置 4 总结 1 项目场景&…

瑞芯微RK3566鸿蒙开发板Android11修改第三方输入法为默认输入法

本文适用于触觉智能所有支持Android11系统的开发板修改第三方输入法为默认输入法。本次使用的是触觉智能的Purple Pi OH鸿蒙开源主板&#xff0c;搭载了瑞芯微RK3566芯片&#xff0c;类树莓派设计&#xff0c;是Laval官方社区主荐的一款鸿蒙开发主板。 一、安装输入法并查看输入…

CSS05-Emment语法

Emmet语法的前身是Zen coding&#xff0c;它使用缩写&#xff0c;来提高html/css的编写速度&#xff0c;Vscode内部已经集成该语法。 作用&#xff1a; 1.快速生成HTML结构语法 2.快速生成CSS样式语法

linux 安装 tomcat9、java环境

一、安装 Java环境 1. 下载文件 https://repo.huaweicloud.com/java/jdk/ 或者网盘&#xff1a;通过网盘分享的文件&#xff1a;jdk-8u192-linux-x64.tar.gz 链接: https://pan.baidu.com/s/1V3pQWzgSLJxdrUdmmKueRA 提取码: qspw 2. 查看Linux系统是否有自带的jdk&#xf…

【TabBar嵌套Navigation案例-产品推荐-CollectionView的layout设置 Objective-C语言】

一、我们接着来做这个产品推荐页面啊 1.我们之前,把这个产品推荐页面做出来了,就是长的丑了点儿,所以呢,我们需要去给它设置一下itemSize啦,等等一些东西, 好,首先呢,在这个里边,我们找到我们的layout这块儿, 然后呢,这个layout里边,我们一个一个来设置, 首先呢…

Excel DATE函数怎么用,DATE函数的使用方法来了

大家好&#xff0c;这里是效率办公指南&#xff01; &#x1f4c5; 在处理Excel中的日期数据时&#xff0c;我们经常需要创建特定的日期或从多个单元格中合并日期。DATE 函数是Excel中一个非常实用的工具&#xff0c;它可以帮助我们从年、月、日的单独信息中创建一个正确的日期…

Kylinsec操作系统

外网源 发布地址&#xff1a;http://mirrorlist.kylinsec.com.cn:8888/publicrepo/

Git(5):分支合并merge和rebase

git merge 假设有两个分支&#xff1a;master 分支和 feature 分支&#xff0c;现在需要将 feature 分支合并到 master 分支。 git checkout mastergit merge feature在合并分支时&#xff0c;git 提供了不同的合并策略&#xff0c;用于处理不同的合并场景。 Fast-forward 如…

《百家姓》中排名第八却是中国人口第一大姓-王姓

王姓在《百家姓》中虽然排名第八&#xff0c;但根据近年来的统计数据和实际人口分布&#xff0c;王姓已成为中国第一大姓。以下是对王姓作为“百家姓之首”的详细解析&#xff1a; 一、人口数量与分布 人口数量&#xff1a;截至当前时间&#xff08;2024年&#xff09;&#x…