zoukankan      html  css  js  c++  java
  • opencv —— inpaint 图像修补、去除指定区域物体

    实现图像修补、物体去除:inpaint 函数

    void inpaint(InputArray src, InputArray inpaintMask, OutputArray dst, double inpaintRadius, int flags);

    • src,输入图像,即源图像,填 Mat 类对象即可。但需是 8 位单通道或三通道图像。
    • inpaintMask,修复掩膜,为 8 位单通道图像。其中非零像素为需要修补的区域。
    • dst,输出图像,需要和源图像有相同的尺寸和类型。
    • inpaintRadius,圆形邻域半径。
    • flags,修补方法的标识符,两种选择:
    标识符 说明
    INPAINT_TELEA 基于 Navier-Stokes 方程的方法
    INPAINT_NS Alexandru Telea 方法

    代码示例:

    //该程序功能为:消除鼠标选择的矩形区域内的物体
    #include<opencv.hpp>
    #include<iostream>
    using namespace std;
    using namespace cv;
    Mat src, back, dst;
    Point pre, now;
    bool draw = false;
    RNG rngs = { 12345 };
    Scalar colors;
    void on_mouse(int event, int x, int y, int flags, void *param) {//鼠标操作响应函数
        switch (event){
        case EVENT_LBUTTONDOWN://按下左键
            draw = true;
            pre = Point(x, y);
            break;
        case EVENT_MOUSEMOVE://鼠标移动
            if (draw) {
                Mat tem = dst.clone();
                now = Point(x, y);
                colors = Scalar(rngs.uniform(0, 255), rngs.uniform(0, 255), rngs.uniform(0, 255));
                rectangle(tem, pre, now, colors);
                imshow("dst", tem);
            }
            break;
        case EVENT_LBUTTONUP://左键抬起
            draw = false;
            rectangle(back, pre, now, Scalar(255), -1);//在 修复掩膜 图像中绘制选择区域
            inpaint(dst, back, dst, 3, INPAINT_TELEA);//修复图像
            imshow("dst", dst);
            break;
        }
    }
    int main() {
        src = imread("C:/Users/齐明洋/Desktop/示例图片/1.jpg");
        imshow("src", src);
    
        namedWindow("dst");
        dst = src.clone();
        imshow("dst", dst);
        back = Mat::zeros(src.size(), CV_8UC1);//修复掩膜
        setMouseCallback("dst", on_mouse);//https://www.cnblogs.com/bjxqmy/p/11914601.html
        
        waitKey(0);
    }

    效果演示:

  • 相关阅读:
    [Delphi] 两种类的声明方法
    [Delphi]TMemoryStatus获取内存信息
    各大网站架构总结笔记[转]
    常用CSS命名参考资料
    常用的CSS Reset
    网页制作之CSS超级技巧
    SQL服务无法正常启动及数据库卸载
    常用CSS缩写语法
    视频播放器代码参数详解
    优秀的 Web 开发人员是这样炼成的
  • 原文地址:https://www.cnblogs.com/bjxqmy/p/12372136.html
Copyright © 2011-2022 走看看