【OpenCV3图像处理】图像修复
2017-06-17 16:51
183 查看
函数原型:
使用实例:
源码位置:
C:\opencv\sources\modules\photo\src\inpaint.cpp
使用实例:
#include "opencv2/imgcodecs.hpp" #include "opencv2/highgui.hpp" #include "opencv2/imgproc.hpp" #include "opencv2/photo.hpp" #include <iostream> using namespace cv; using namespace std; static void help() { cout << "\nCool inpainging demo. Inpainting repairs damage to images by floodfilling the damage \n" << "with surrounding image areas.\n" "Using OpenCV version %s\n" << CV_VERSION << "\n" "Usage:\n" "./inpaint [image_name -- Default ../data/fruits.jpg]\n" << endl; cout << "Hot keys: \n" "\tESC - quit the program\n" "\tr - restore the original image\n" "\ti or SPACE - run inpainting algorithm\n" "\t\t(before running it, paint something on the image)\n" << endl; } Mat img, inpaintMask; Point prevPt(-1,-1); static void onMouse( int event, int x, int y, int flags, void* ) { if( event == EVENT_LBUTTONUP || !(flags & EVENT_FLAG_LBUTTON) ) prevPt = Point(-1,-1); else if( event == EVENT_LBUTTONDOWN ) prevPt = Point(x,y); else if( event == EVENT_MOUSEMOVE && (flags & EVENT_FLAG_LBUTTON) ) { Point pt(x,y); if( prevPt.x < 0 ) prevPt = pt; line( inpaintMask, prevPt, pt, Scalar::all(255), 5, 8, 0 ); line( img, prevPt, pt, Scalar::all(255), 5, 8, 0 ); prevPt = pt; imshow("image", img); } } int main( int argc, char** argv ) { cv::CommandLineParser parser(argc, argv, "{help h||}{@image|../data/fruits.jpg|}"); if (parser.has("help")) { help(); return 0; } string filename = parser.get<string>("@image"); Mat img0 = imread(filename, -1); if(img0.empty()) { cout << "Couldn't open the image " << filename << ". Usage: inpaint <image_name>\n" << endl; return 0; } namedWindow( "image", 1 ); img = img0.clone(); inpaintMask = Mat::zeros(img.size(), CV_8U); imshow("image", img); setMouseCallback( "image", onMouse, 0 ); for(;;) { char c = (char)waitKey(); if( c == 27 ) break; if( c == 'r' ) { inpaintMask = Scalar::all(0); img0.copyTo(img); imshow("image", img); } if( c == 'i' || c == ' ' ) { Mat inpainted; inpaint(img, inpaintMask, inpainted, 3, INPAINT_TELEA); imshow("inpainted image", inpainted); } } return 0; }
源码位置:
C:\opencv\sources\modules\photo\src\inpaint.cpp
相关文章推荐
- 【第二部分 图像处理】第4章 Opencv图像处理高阶【3图像修复】
- opencv图像边缘检测使用,先做平滑处理在进行边缘检测
- [转]opencv3 图像处理 之 图像缩放( python与c++实现 )
- 使用谷歌开源组件tesseract-OCR识别身份证,通过opencv处理图像后再进行识别(windows版本)
- Zedboard甲诊opencv图像处理(四)
- 【小白学OpenCV】(1): 图像处理之低通滤波
- 图像识别与处理之Opencv——高斯滤波及GaussianBlur()函数
- opencv中图像处理出错情况总结
- 【Java+OpenCV】图像的基本处理(读取,显示)
- 图像处理算法基础(三)---直方图均衡化,自研与opencv对比
- opencv(c++)图像处理(imgproc模块)[2]
- python-opencv图像处理基础练习2
- ★【OpenCV数字图像处理】(1)_总记
- 【OpenCV3图像处理】图像简单几何变换:旋转、平移、缩放
- Android调用OpenCV-图像处理系统开发备忘
- Python3与OpenCV3.3 图像处理(一)--环境搭建与简单DEMO
- 学习Opencv2之载入一幅图像并进行平滑处理
- opencv 图像轮廓处理
- OpenCV图像处理-区域分割-形态学操作应用
- 利用OpenCV的inpaint函数实现图像的污点修复