C++ OpenCV如何实现图像修复功能
C++ OpenCV如何实现图像修复功能
本篇文章给大家分享的是有关C++OpenCV如何实现图像修复功能,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。
前言
下面将使用OpenCV C++ 对有瑕疵的图像进行修复。OpenCV 提供了inpaint API可进行图像修复。
一、OpenCV inpaint
原图如图所示。本案例的需求是希望能够将图像上的红线给消除。OpenCV 提供的inpaint API能够实现这个效果。
void inpaint(
InputArray src, 原图
InputArray inpaintMask, 二进制掩模,指示要修复的像素
OutputArray dst, 目标图像
double inpaintRadius, 像素周围的邻域补绘。通常,如果要修复的区域很小,则使用较小的值仅产生较少模糊
int flags INPAINT_NS 或 INPAINT_TELEA
)
使用这个API最重要的就是生成一张二进制掩模图像(要修复的地方)。我们可以使用鼠标响应事件完成。
//使用鼠标响应事件在inpaintMask绘制掩模,用于图片修复if(event==EVENT_LBUTTONUP||!(flags&EVENT_FLAG_LBUTTON)){prevPt=Point(-1,-1);}elseif(event==EVENT_LBUTTONDOWN){prevPt=Point(x,y);}elseif(event==EVENT_MOUSEMOVE&&(flags&EVENT_FLAG_LBUTTON)){prevPt=Point(x,y);//绘制掩模图像circle(inpaintMask,prevPt,2,Scalar::all(255),-1);//imshow("inpaintMask",inpaintMask);//图像修复Matresult;inpaint(src,inpaintMask,result,1,INPAINT_NS);//imshow("image",result);}
如图为掩模图像,接下来使用inpaint就可以对图像进行修复了。
二、源码
#include 如图为使用inpaint修复的效果,可以看出基本上将瑕疵都给去掉了。 以上就是C++OpenCV如何实现图像修复功能,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注亿速云行业资讯频道。三、效果显示
推荐阅读
-
Linux如何安装和使用 OpenCV 计算机视觉库
-
C++之list容器模拟怎么实现
C++之list容器模拟怎么实现这篇“C++之list容器模拟怎么...
-
C++深浅拷贝及简易string类怎么实现
C++深浅拷贝及简易string类怎么实现这篇“C++深浅拷贝及简...
-
C++之list容器如何使用
C++之list容器如何使用今天小编给大家分享一下C++之list...
-
C++内存对齐如何实现
C++内存对齐如何实现本篇内容介绍了“C++内存对齐如何实现”的有...
-
C/C++如何获取CAN信号
C/C++如何获取CAN信号本篇内容主要讲解“C/C++如何获取C...
-
C/C++程序链接与反汇编工具objdump如何使用
C/C++程序链接与反汇编工具objdump如何使用这篇文章主要介...
-
C++聚合体初始化的方法是什么
C++聚合体初始化的方法是什么本篇内容介绍了“C++聚合体初始化的...
-
C++引用如何使用
C++引用如何使用这篇文章主要介绍“C++引用如何使用”的相关知识...
-
C++类和对象之封装及class与struct的区别是什么