OpenCV学习笔记(十七):图像修补:inpaint()

OpenCV学习笔记(十七):图像修补:inpaint()

inpaint()函数

使用区域邻域在图像中还原选定区域。

void inpaint( 
InputArray src, 			// 表示要修复的图像,8位三通道或三通道
InputArray inpaintMask,		// 表示修复模板(掩模),8位单通道,非零区域为修补区域
OutputArray dst, 			// 表示修复后的图像
double inpaintRadius, 		// 表示该算法所考虑的需要修补的每个点的圆形邻域的圆形领域半径。
int flags 					// 表示修复使用的算法	// CV_INPAINT_TELEA  Alexandru Telea 算法 .// CV_INPAINT_NS 基于 Navier-Stokes 方程的算法
);

感觉两种算法修复效果都还不错,但是都需要事先准备修复模板mask,也就是inpaintMask 这个参数。
例子里面用鼠标在图片上划线,划线的同时也更新了mask,而真正应用的时候需要事先设计好这个mask。

示例:

#include <opencv2/opencv.hpp>using namespace cv;
using namespace std;#define WINDOW_NAME0 "【原始图参考】"        //为窗口标题定义的宏 
#define WINDOW_NAME1 "【原始图】"        //为窗口标题定义的宏 
#define WINDOW_NAME2 "【修补后的效果图】"        //为窗口标题定义的宏 Mat srcImage0,srcImage1, inpaintMask;
Point previousPoint(-1,-1);//原来的点坐标int main()
{//输出一些帮助信息printf("\n\n\n\t欢迎来到【图像修复】示例程序~\n");printf(  "\n\t请在进行图像修复操作之前,在【原始图】窗口中进行适量的绘制""\n\n\t按键操作说明: \n\n""\t\t【鼠标左键】-在图像上绘制白色线条\n\n""\t\t键盘按键【ESC】- 退出程序\n\n""\t\t键盘按键【1】或【SPACE】-进行图像修复操作 \n\n"   );//1、载入原图并显示,初始化掩膜和灰度图Mat srcImage = imread("F:/C++/2. OPENCV 3.1.0/TEST/inpaint.jpg", 1);if(!srcImage.data ) { printf("读取图片错误,请确定目录下是否有imread函数指定图片存在~! \n"); return false; }srcImage0 = srcImage.clone();srcImage1 = srcImage.clone();inpaintMask = Mat::zeros(srcImage1.size(), CV_8U);//显示原始图参考imshow(WINDOW_NAME0, srcImage0);//显示原始图imshow(WINDOW_NAME1, srcImage1);//设置鼠标回调消息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(srcImage1);imshow(WINDOW_NAME1, srcImage1);}//键值为1或者空格,进行图像修补操作if( c == '1' || c == ' ' ){Mat inpaintedImage;inpaint(srcImage1, inpaintMask, inpaintedImage, 3, CV_INPAINT_TELEA);imshow(WINDOW_NAME2, inpaintedImage);}}waitKey(0);return 0;
}
static void On_Mouse( int event, int x, int y, int flags, void* )
{//鼠标左键弹起消息if( event == CV_EVENT_LBUTTONUP || !(flags & CV_EVENT_FLAG_LBUTTON) )previousPoint = Point(-1,-1);//鼠标左键按下消息else if( event == CV_EVENT_LBUTTONDOWN )previousPoint = Point(x,y);//鼠标按下并移动,进行绘制else if( event == CV_EVENT_MOUSEMOVE && (flags & CV_EVENT_FLAG_LBUTTON) ){Point pt(x,y);if( previousPoint.x < 0 )previousPoint = pt;//绘制白色线条// 同时在源图和掩模图 中绘制涂鸦;line( inpaintMask, previousPoint, pt, Scalar::all(255), 5, 8, 0 );line( srcImage1, previousPoint, pt, Scalar::all(255), 5, 8, 0 );previousPoint = pt;imshow(WINDOW_NAME1, srcImage1);}
}

结果:
在这里插入图片描述
CV_INPAINT_TELEA 算法:
在这里插入图片描述
CV_INPAINT_NS 算法:
在这里插入图片描述

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

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

相关文章

plt.errorbar画误差曲线

plt.errorbar(x, y, yerrNone, xerrNone, fmt, ecolorNone, elinewidthNone, capsizeNone, capthickNone ) 功能&#xff1a;画误差曲线&#xff0c;也可以用于画置信区间/标准差/方差参数&#xff1a;x&#xff1a;横坐标的值&#xff0c;y&#xff1a;纵坐标的值&#xff0c…

oracle数据库卸载(需要完全卸载oracl才能重装)

1、 开始&#xff0d;>设置&#xff0d;>控制面板&#xff0d;>管理工具&#xff0d;>服务 停止所有Oracle服务。 2、 开始&#xff0d;>程序&#xff0d;>Oracle - OraHome81&#xff0d;>Oracle Installation Products&#xff0d;> Universal Insta…

OpenCV学习(二十) :直方图匹配、对比:calcHist(),minMaxLoc(),compareHist()

直方图匹配、对比:calcHist ,minMaxLoc,compareHist1、calcHist()函数2、归一化&#xff1a;normalize()函数3、minMaxLoc()函数4、compareHist()函数5、示例一&#xff1a;H-S彩色图像的色调、饱和度二维直方图绘制6、示例二&#xff1a;灰度值一维直方图绘制7、示例三&#x…

Intel和IBM押重注的神经模态计算,会给行业带来什么样的变化

Intel发布的Pohoiki Beach加速卡&#xff0c;含有64块Loihi芯片来源&#xff1a; 半导体行业观察上周&#xff0c;Intel发布了基于其神经模态&#xff08;neuromorphic&#xff09;计算芯片Loihi的加速卡Pohoiki Beach&#xff0c;该加速卡包含了64块Loihi芯片&#xff0c;共含…

python求散点曲线下方面积

假设y[1,2,3,4,2,3,1,4,2,3]是一条散点曲线&#xff0c;求y下方的面积&#xff1a; import numpy as npy[1,2,3,4,2,3,1,4,2,3] np.trapz(y)

sql语句变量定义和样例

变量和与常量 1.定义和使用局部变量说明&#xff1a;局部变量是用户可自定义的变量&#xff0c;它的作用范围仅在程序内部。局部变量的名称是用户自定义的&#xff0c;命名的局部变量名要符合SQL Server 2000标识符命名规则&#xff0c;必须以开头。 本实例在图书信息表中声明3…

OpenCV学习(二十二) :反向投影:calcBackProject(),mixChannels()

OpenCV学习(二十二) &#xff1a;反向投影:calcHist(),minMaxLoc(),compareHist() 参考博客&#xff1a; 反向投影backproject的直观理解 opencv 反向投影 颜色直方图的计算、显示、处理、对比及反向投影 一、概述 1、官方解释&#xff1a;反向投影是一种记录给定图像中的像…

Elsevier LaTeX模板下载

https://www.elsevier.com/authors/author-schemas/latex-instructions

美国正式宣告将在月球建立永久存在基地

来源&#xff1a;凤凰新闻央视网消息&#xff1a;7月20号是人类首次载人登陆月球50周年纪念日&#xff0c;美国公布了“阿尔忒弥斯计划”的官方标志图案&#xff0c;正式宣告将在月球建立永久存在基地。美国媒体直呼&#xff0c;美国要“占领”月球了。1969年&#xff0c;美国的…

我的随笔

我叫白天涯&#xff0c;来自计科13-1班。 首次使用这个博客园发表随笔&#xff0c;请大家多多关照。 本次软件工程课我希望能好好听讲&#xff0c;认真做课堂记录&#xff0c;不会的及时问老师&#xff0c;以及跟同学沟通&#xff0c;尽管我计算机这方面不是太精通&#xff0c;…

for的穷举和迭代

for的穷举 把所有可能的情况都走一遍&#xff0c;使用if条件筛选出来满足条件的情况。 例&#xff1a; 单位给发了一张150元购物卡&#xff0c; 拿着到超市买三类洗化用品。 洗发水15元&#xff0c;香皂2元&#xff0c;牙刷5元。 求刚好花完150元&#xff0c;有多少种买法&…

一文看懂5G芯片背后的明争暗斗

来源&#xff1a;鲜枣课堂6月6日工信部正式发放5G商用牌照之后&#xff0c;国内5G网络建设的步伐大幅加快了。越来越多的城市出现了5G基站和5G信号&#xff0c;5G离我们的距离更近了。面对激动人心的5G&#xff0c;我们普通用户最关心的问题&#xff0c;当然是什么时候才能用上…

各种文件格式转换

http://www.alltoall.net/ 在线文件转换导航是一款支持200多种格式的在线转换工具&#xff0c;并且完全免费。 它支持视频格式&#xff0c;音频格式&#xff0c;图片格式&#xff0c;常见文档&#xff0c;表格格式&#xff0c;演示用文档格式&#xff0c;电子书格式&#xff…

OpenCV学习(二十三) :模板匹配:matchTemplate(),minMaxLoc()

OpenCV学习(二十三) &#xff1a;模板匹配:matchTemplate() 1、概述 模板匹配是一种最原始、最基本的模式识别方法&#xff0c;研究某一特定对象物的图案位于图像的什么地方&#xff0c;进而识别对象物&#xff0c;这就是一个匹配问题。 它是图像处理中最基本、最常用的匹配方…

CSS3实现图形曲线阴形和翘边阴影

首先&#xff0c;来看看完成之后的效果图&#xff1a; 实现原理 ①曲线阴影实现&#xff1a; 多个阴影重叠&#xff0c;就是正常阴影曲线阴影 正常情况下&#xff0c;有个矩形有正常的阴影&#xff0c;作为主投影&#xff0c;这时候再定义一个有一定弧度圆角的圆角矩形&#xf…

腾飞资本任溶 :互联网大脑,新的天方夜谭?—评《崛起的超级智能》

作者&#xff1a;任 溶 腾飞资本董事长&#xff0c;城市大脑创新合伙人基金管理合伙人因为我做科技产业投资工作&#xff0c;投资领域涉及互联网等新经济、新模式和新技术等&#xff0c;所以这几年总是听到一些言论&#xff0c;诸如“互联网已死”&#xff0c;或者“互联网红利…

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

OpenCV学习(二十四 &#xff09;&#xff1a;角点检测(Corner Detection):cornerHarris(),goodFeatureToTrack() 参考博客&#xff1a; Harris角点检测原理详解 Harris角点检测原理及C实现 OpenCV亚像素角点cornerSubPixel()源代码分析 Taylor公式&#xff08;泰勒公式&#x…

在线ps网站

https://ps.gaoding.com/

无人驾驶技术的7大典型应用场景

来源 | 数据观综合无人驾驶风口来临&#xff0c;引得各方资本竞相追逐。据业内预测&#xff0c;2019年到2020年无人驾驶L3&#xff08;条件自动&#xff09;级别的汽车将实现量产化&#xff0c;2022年后部分企业将实现L4&#xff08;高度自动&#xff09;量产&#xff0c;若要实…

数字图像处理学习笔记(一):特征检测和匹配概述

数字图像处理学习笔记&#xff08;一&#xff09;&#xff1a;特征检测和匹配概述 参考博客&#xff1a; 特征点的匹配SIFT特征详解数字图像处理学习笔记&#xff08;二&#xff09;&#xff1a;SIFT&#xff08;尺度不变特征变换&#xff09;算法 1、特征点概述 如何高效且…