c++数据处理----图像修补:cv::inpaint()

news2024/10/6 22:30:51

图像修补:cv::inpaint()

cv::inpaint() 是OpenCV中的一个函数,用于图像修补(image inpainting)。图像修补是一种图像处理技术,用于去除图像中的损坏或不需要的区域,然后用周围的信息填充这些区域,使图像看起来完整。这在图像修复、对象删除、障碍物遮挡处理等领域非常有用。

函数签名如下:

cv::inpaint(src, inpaintMask, dst, inpaintRadius, flags);
  • src: 输入图像,需要进行修补的图像。
  • inpaintMask: 用于指定需要修补的区域的掩码。这是一个与输入图像大小相同的图像,其中需要修补的区域用白色标记,其余区域用黑色标记。
  • dst: 输出图像,修补后的结果将保存在这里。
  • inpaintRadius: 修补半径,指定了在修补时使用多少邻域像素来估算被修补像素的值。
  • flags: 修补算法的标志,可以选择不同的修补算法,如 cv::INPAINT_TELEAcv::INPAINT_NS

示例用法已在之前的回答中提供。

cv::inpaint() 函数的工作原理是通过利用周围的信息来估算需要修补区域的像素值,以便生成修补后的图像。这是一个有用的工具,可用于图像修复和对象删除等任务。

#include <opencv2/opencv.hpp>
#include <iostream>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>

using namespace std;
using namespace cv;
#include <iostream>
#include <fstream>
using namespace cv; //包含cv命名空间
#include <opencv2/core/core.hpp>
#define WINDOW_NAME1 "【原始图】" //为窗口标题定义的宏
#define WINDOW_NAME2 "【修补后的效果图】" //为窗口标题定义的宏
// 描述: 全局变量声明
Mat srcImagel, inpaintMask;
Point previousPoint(-1, -1);//原来的点坐标
//- -【On_Mouse()函数】
// 描述: 响应鼠标消息的回调函数
//
static void On_Mouse(int event, int x, int y, int flags, void*)
{
	//鼠标左键弹起消息
	if (event == EVENT_LBUTTONUP || !(flags & EVENT_FLAG_LBUTTON))
		previousPoint = Point(-1, -1);
	//鼠标左键按下消息
	else if (event== EVENT_LBUTTONDOWN)
		previousPoint = Point(x, y);
	//鼠标按下并移动, 进行绘制
	else if (event == EVENT_MOUSEMOVE && (flags & EVENT_FLAG_LBUTTON)) {
		Point pt(x, y);
		if (previousPoint.x < 0)
			previousPoint = pt;
		//绘制白色线条
		line(inpaintMask, previousPoint, pt, Scalar::all(255), 5, 8, 0);
		line(srcImagel, previousPoint, pt, Scalar::all(255), 5, 8, 0); previousPoint = pt;
		imshow(WINDOW_NAME1, srcImagel);
	}
}
//---------------------------【main()函数】- -----------------
// 描述: 控制台应用程序的入口函数, 我们的程序从这里开始执行
int main(int argc, char** argv)
{
	//载入原始图并进行掩膜的初始化
	Mat srcImage = imread("1.jpg", -1);
	if (!srcImage.data) { printf("读取图片错误, 请确定目录下是否有 imread 函数指定图片存在~! \n"); return false; }
	srcImagel = srcImage.clone();
	inpaintMask = Mat::zeros(srcImagel.size(), CV_8U);
	//显示原始图
	imshow(WINDOW_NAME1, srcImagel);
	//设置鼠标回调消息
	setMouseCallback(WINDOW_NAME1, On_Mouse, 0);
	//轮询按键, 根据不同的按键进行处理
	while (1)
	{
		//获取按键键值
		char c = (char)waitKey();
		//键值为 ESC, 程序退出
		if (c == 27)
			break;
		//键值为2,恢复成原始图像
		if (c == '2')
		{
			inpaintMask = Scalar::all(0);
			srcImage.copyTo(srcImagel);
			imshow(WINDOW_NAME1, srcImagel);
		}
		//键值为1或者空格, 进行图像修补操作
		if (c == '1' || c == ' ')
		{
			Mat inpaintedImage;
			inpaint(srcImagel, inpaintMask, inpaintedImage, 3, INPAINT_TELEA);
			imshow(WINDOW_NAME2, inpaintedImage);
		}
	}
	return 0;
}

在这里插入图片描述

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

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

相关文章

苹果安卓网页的H5封装成App的应用和原生开发的应用有什么不一样?

老哥在么&#xff1f;H5封装的app和原生开发的app有什么不一样&#xff1f;&#xff0c;不懂就要问&#xff0c;我能理解哈&#xff0c;虽然这个问题有点小白&#xff0c;但是我还是得认真回答&#xff0c;以防止我回答的不是很好&#xff0c;所以我科技了一下&#xff0c;所以…

1688商品评论数据接口,1688商品评论API接口

1688商品评论内容数据接口步骤如下&#xff1a; 通过1688开放平台接口获取商品评论内容数据&#xff1a;首先&#xff0c;您需要在开放平台注册成为开发者并创建一个应用&#xff0c;获取到所需的App Key和App Secret等信息。使用获取到的App Key和App Secret&#xff0c;进行…

智能防眩目前照灯系统控制器ADB

经纬恒润的自适应远光系统—— ADB&#xff08;Adaptive Driving Beam&#xff09; 是一种能够根据路况自适应变换远光光型的智能远光控制系统。根据本车行驶状态、环境状态以及道路车辆状态&#xff0c;ADB 系统自动为驾驶员开启或退出远光。同时&#xff0c;根据车辆前方视野…

深入了解进程:计算机中的任务管理与隔离

什么是进程&#xff1f; 进程是一个独立的执行环境&#xff0c;包括自己的内存空间、程序计数器、文件句柄等。每个进程都是操作系统的一个独立实例&#xff0c;它们之间通常相互隔离。 通俗来说&#xff0c;进程就是程序的一次执行过程&#xff0c;程序是静态的&#xff0c;它…

4Spring及Spring系列-基本

8、Spring/Spring MVC Spring常见面试题55道&#xff08;附答案2023最新版&#xff09;_spring面试题-CSDN博客Spring是一个开源的Java企业级开发框架&#xff0c;由Rod Johnson于2003年创建。它提供了一套全面的编程和配置模型&#xff0c;用于构建现代化的基于Java的企业应用…

【网工日常】Web网管及注意事项

通过Web网管登录设备简介 定义 Web网管是一种对设备的管理方式&#xff0c;它利用设备内置的Web服务器&#xff0c;为用户提供图形化的操作界面。用户需要从终端通过HTTPS登录到设备&#xff0c;才能利用Web网管对设备进行管理和维护。 目的 用户对设备的管理方式有命令行方式…

基于自适应图卷积网络的轨道交通短时客流预测

文章信息 论文题目为《Adaptive graph convolutional network-based short-term passenger flow prediction for metro》的一篇2023年5月发表在Journal of Intelligent Transportation Systems的基于自适应图卷积网络的轨道交通短时客流预测文章。 摘要 随着城市化进程的发展和…

医疗机构又进化了,一招搞定UPS设备太爽了!

在现代社会中&#xff0c;能源供应的可靠性至关重要&#xff0c;不间断电源&#xff08;UPS&#xff09;系统是维持关键设备运行的关键组成部分。UPS监控是一种重要的技术&#xff0c;用于实时监测UPS的性能、电池状态和电力质量。 客户案例 四川某医院是一家大型医疗机构&…

应对优秀解决方案推荐

验证码是保护网站免受自动化 的重要工具&#xff0c;但同时也给实现自动化任务带来一定的困扰。本文将为您介绍如何应对验证码识别难题&#xff0c;并推荐一些优秀的解决方案&#xff0c;帮助您在实际操作中应对验证码识别问题。 1. 验证码识别难题 验证码识别是指将网站上的…

DevExpress Reporting中文教程 - 如何在macOS等系统中生成导出报表文档

DevExpress Reporting是.NET Framework下功能完善的报表平台&#xff0c;它附带了易于使用的Visual Studio报表设计器和丰富的报表控件集&#xff0c;包括数据透视表、图表&#xff0c;因此您可以构建无与伦比、信息清晰的报表。 在本文中&#xff0c;我们将讨论如何在.NET MA…

基于threejs的3d学校示例

源码下载地址在文章末尾&#xff01; 效果演示 总览 漫游模式 切换黑夜 视频播放 源码下载地址 https://download.csdn.net/download/qq_43185384/88415886

优盘无法格式化?分享简单解决方法!

“我的优盘插入了一个带病毒的电脑中&#xff0c;现在优盘也中毒了&#xff0c;想把它格式化。但是操作的时候却显示优盘无法格式化&#xff0c;这种情况应该怎么办呢&#xff1f;” 优盘&#xff0c;又称USB闪存驱动器。由于其体积小且方便携带&#xff0c;受到广大电脑用户的…

Vega Prime入门教程14.04:CDB测试

本文首发于&#xff1a;Vega Prime入门教程14.04&#xff1a;CDB测试 打开失败 打开vpcdb_yemen_urban.acf 会报错 点击确定后会显示默认界面 这个白天蓝海应该是默认场景。 开启服务 打开LP&#xff0c;点击菜单栏或者工具栏 显示管理界面 切换至rtp界面 点击Start RTP按…

跨境电商需要使用ERP吗?| 跨境电商卖家应如何选择ERP?

复杂多变的市场环境将中国跨境电商行业带到了新的发展阶段。受益于国家对于跨境电商的持续鼓励政策&#xff0c;许多跨境电商企业已经初具规模。积累了较强的产品、供应链能力及一定的独立站运营经验。” 随着跨境电商企业规模升级&#xff0c;平台提供的卖家后台系统往往无法…

ROS为机器人装配激光雷达

移动机器人在环境中获取障碍物的具体位置、房间的内部轮廓等信息都是非常必要的&#xff0c;这些信息是机器人创建地图、进行导航的基础数据&#xff0c;除上面所讲的Kinect&#xff0c;还可以使用激光雷达作为这种场景应用下的传感器。 激光雷达可用于测量机器人和其他物体之间…

希亦CG声波清洗机:眼镜党福利,家庭必备清洗机

对于眼镜党来说最大的烦恼就是每天的佩戴和清洗&#xff0c;清洗是至关重要的&#xff0c;错误的清洗很容易引起镜片损坏&#xff0c;个人一直使用眼镜布清洗&#xff0c;除了费时费力之外清洁度也无法保证。希亦CG声波清洗机正是为了解决这一难题应运而生&#xff0c;可以彻底…

OrcaTerm AI

&#x1f648;作者简介&#xff1a;练习时长两年半的Java up主 &#x1f649;个人主页&#xff1a;程序员老茶 &#x1f64a; ps:点赞&#x1f44d;是免费的&#xff0c;却可以让写博客的作者开心好久好久&#x1f60e; &#x1f4da;系列专栏&#xff1a;Java全栈&#xff0c;…

论Oracle兼容性,我们需要做什么

作者介绍&#xff1a;王海峰&#xff0c;数据库系统架构师&#xff0c;YashanDB SQL开发负责人&#xff0c;10年以上数据库内核技术开发经验。 Oracle兼容性是目前国产数据库的关键任务之一&#xff0c;其直接影响到商业迁移的成本和竞争力。 我们经常发现&#xff0c;部分国产…

蓝桥杯 题库 简单 每日十题 day13

01 乘积尾零 题目描述 本题为填空题&#xff0c;只需要算出结果后&#xff0c;在代码中使用输出语句将 所填结果输出即可。如下的10行数据&#xff0c;每行有10个整数&#xff0c;请你求出它们的乘积的末尾有多少个零&#xff1f; 5650 4542 3554 473 946 4114 3871 9073 90 …

【SpringCloud】微服务技术栈入门8 - 黑马旅游微服务项目实战笔记

目录 黑马旅游案例分页查询自动补全安装依赖自定义分词器Completion Suggester 聚合数据聚合的分类Bucket 聚合Metrix 聚合RestClient 实现聚合suggest 查询结果 数据同步同步策略mq 同步 eses 搭设集群 黑马旅游案例 分页查询 前端页面以及对应请求接口已经设置完备&#xff…