openCV实现类似ps抠图功能
本文章仅用于学习。
在OpenCV提供的函数中,grabcut() 能够实现抠图,inpaint() 能够实现修补。那么把两者结合起来,就能够实现简单的“目标去除”功能,也就是框选一个目标后,使用周围的景象对抠掉的目标部分进行修补。
示例:
#include <iostream>
#include <opencv2\opencv.hpp>
using namespace std;
using namespace cv;
string filename;
Mat image;
string winName = "show";
enum {
NOT_SET = 0, IN_PROCESS = 1, SET = 2 };
uchar rectState;
Rect rect;
Mat mask;
const Scalar GREEN = Scalar(0, 255, 0);
Mat bgdModel, fgdModel;
Mat inpaintMask;Point pre;
void setRectInMask() {
rect.x = max(0, rect.x);
rect.y = max(0, rect.y);
rect.width = min(rect.width, image.cols - rect.x);
rect.height = min