opencv-图像修补,图像修复,inpaint

news/2024/12/5 2:26:31/
//---------------------------------【头文件、命名空间包含部分】----------------------------
//		描述:包含程序所使用的头文件和命名空间
//------------------------------------------------------------------------------------------------
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp"
#include "opencv2/photo/photo.hpp"
#include <iostream>
using namespace cv;
using namespace std;//-----------------------------------【宏定义部分】-------------------------------------------- 
//  描述:定义一些辅助宏 
//----------------------------------------------------------------------------------------------
#define WINDOW_NAME0 "【原始图参考】"        //为窗口标题定义的宏 
#define WINDOW_NAME1 "【原始图】"        //为窗口标题定义的宏 
#define WINDOW_NAME2 "【修补后的效果图】"        //为窗口标题定义的宏 //-----------------------------------【全局变量声明部分】--------------------------------------
//          描述:全局变量声明
//-----------------------------------------------------------------------------------------------
Mat srcImage0,srcImage1, inpaintMask;
Point previousPoint(-1,-1);//原来的点坐标//-----------------------------------【ShowHelpText( )函数】----------------------------------
//          描述:输出一些帮助信息
//----------------------------------------------------------------------------------------------
static void ShowHelpText( )
{//输出一些帮助信息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"   );  
}//-----------------------------------【On_Mouse( )函数】--------------------------------
//          描述:响应鼠标消息的回调函数
//----------------------------------------------------------------------------------------------
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);}
}//--------------------------------------【main( )函数】-----------------------------------------
//          描述:控制台应用程序的入口函数,我们的程序从这里开始执行
//-----------------------------------------------------------------------------------------------
int main( int argc, char** argv )
{//改变console字体颜色system("color 2F"); //显示帮助文字ShowHelpText();//载入原始图并进行掩膜的初始化Mat srcImage = imread("1.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);}}return 0;
}


http://www.ppmy.cn/news/466959.html

相关文章

图片去水印Inpaint5.2汉化破解便携版

Inpaint是一款照片修复工具&#xff0c;用来去除照片中的瑕疵&#xff0c;在网上下载的一些图片通常都会有网站LOGO&#xff0c;可以利用Inpaint除去照片中的LOGO&#xff0c;Inpaint采用最新的的算法能自动计算图像中相邻区域的颜色分布&#xff0c;利用周围的背景色自动填充所…

【Python】OpenCV中的cv2.inpaint()函数

概念 修复是图像插值。数字修复算法在图像插值&#xff0c;照片恢复&#xff0c;缩放和超分辨率等方面具有广泛的应用。 大多数人会在家里放一些旧的退化照片&#xff0c;上面有一些黑点&#xff0c;一些笔画等。你有没有想过恢复它&#xff1f;我们不能简单地在绘画工具中擦…

Mac图片去水印软件Teorex Inpaint值得推荐的五大理由

如果你的图片中有一些不满意的瑕疵&#xff0c;比如旅游照片中乱入的游客&#xff1f;照片中烦人的水印&#xff1f;想修复多年前的老照片&#xff1f;不必动用庞大ps来兴师动众&#xff0c;只需使用InpAInt即可轻松搞定。Teorex InpAInt 是Mac平台上一款专业的去图片水印/瑕疵…

OpenCV3之——图像修补inpaint()函数

#include <opencv2/opencv.hpp> #include <iostream> using namespace std; using namespace cv;#define WINDOW_NAME1 "原始图" #define WINDOW_NAME2 "修补后的效果图"Mat srcImage1, inpaintMask; Point previousPoint(-1, -1);//初始坐标s…

通过opencv的函数进行图片修复:cv2.inpaint()

库函数使用&#xff1a; dst cv2.inpaint&#xff08;src&#xff0c;mask, inpaintRadius&#xff0c;flags&#xff09; 参数是&#xff1a; src&#xff1a;输入8位1通道或3通道图像。inpaintMask&#xff1a;修复掩码&#xff0c;8位1通道图像。非零像素表示需要修复的…

cv2图像修补inpaint

本篇博客主要介绍cv2模块中的图像修补inpaint。 cv2中主要提供了两种进行图像修补的算法: 1、基于快速行进算法 cv2.INPAINT_TELEA。 2、基于流体动力学并使用了偏微分方程 cv2.INPAINT_NS。 代码: import cv2img = cv2.imread(../data/messi_2.jpg) mask = cv2.imread(…

Python,OpenCV中的图像修复——cv2.inpaint()

Python,OpenCV中的图像修复——cv2.inpaint 1. 效果图2. 原理3. 源码参考image inpainting 图像修改 这篇博客将介绍如何通过OpenCV中图像修复的技术——cv2.inpaint() 去除旧照片中的小噪音、笔划等。并提供一个可交互式的程序,利用OpenCV的快速行进和流体力学俩种修复算法对…

Inpaint 9 简体中文【订阅版+Win/Mac】

Inpaint 是一款强大的实用图片去水印软件,可从图片上去除不必要的物体,让您轻松摆脱图片上的水印、划痕、污渍、标志等瑕疵。 支持语言&#xff1a;简体中文 运行平台&#xff1a;Win7及以上&#xff0c;Mac10.13及以上 设备数量&#xff1a;授权1台设备 换机说明&#xff…