OpenCV C++基于模糊数学的图像修复

这个程序使用OpenCV fuzzy模块进行图像修复。

程序先使用掩模mask生成有缺陷的图片,然后对有缺陷的图片进行修复。

第一组输入输出,进行单步处理(ONE_STEP):

第二组输入输出,进行多步处理(MULTI_STEP):

第三组输入输出,进行多步处理(MULTI_STEP):

第四组输入输出,进行迭代处理(ITERATIVE):

代码:

cpp 复制代码
#include "opencv2/core.hpp"
#include "opencv2/highgui.hpp"
#include "opencv2/fuzzy.hpp"

using namespace std;
using namespace cv;

int main(void)
{
    Mat I = imread("input.png");

    Mat mask1 = imread("mask1.png", IMREAD_GRAYSCALE);
    Mat mask2 = imread("mask2.png", IMREAD_GRAYSCALE);
    Mat mask3 = imread("mask3.png", IMREAD_GRAYSCALE);

    Mat input1, input2, input3;

    I.copyTo(input1, mask1);
    I.copyTo(input2, mask2);
    I.copyTo(input3, mask3);

    Mat output1, output2, output3, output4;

    ft::inpaint(input1, mask1, output1, 2, ft::LINEAR, ft::ONE_STEP);
    ft::inpaint(input2, mask2, output2, 2, ft::LINEAR, ft::MULTI_STEP);
    ft::inpaint(input3, mask3, output3, 2, ft::LINEAR, ft::MULTI_STEP);
    ft::inpaint(input3, mask3, output4, 2, ft::LINEAR, ft::ITERATIVE);

    imwrite("output1_inpaint.png", output1);
    imwrite("output2_inpaint.png", output2);
    imwrite("output3_inpaint.png", output3);
    imwrite("output4_inpaint.png", output4);

    imwrite("input1.png", input1);
    imwrite("input2.png", input2);
    imwrite("input3.png", input3);

    return 0;
}
相关推荐
中微极客1 小时前
降维算法75倍加速:从PCA到稀疏字典学习的工程实践
人工智能·学习·算法
代码青铜1 小时前
三步给 Codex 接上一个真正的后端:无需写代码,让 AI 自动搭建完整应用
人工智能
ziguo11222 小时前
深入浅出 C/C++ 数据类型:从入门到踩坑
linux·c语言·c++·windows·visual studio
白色冰激凌2 小时前
[SECS/GEM研究] (三)SECS-I 串口上消息怎么分块和重传
c++·secs/gem
文心快码BaiduComate2 小时前
从“提示词工程”到“技能工程”:Comate 创建Agent Skills 实战
人工智能
光头闪亮亮2 小时前
Fyne ( go跨平台GUI )项目实战-项目开发必备基础知识(中)
android·c++·go
星栈2 小时前
MCP 从 stdio 迁到 SSE,踩了 5 个传输层坑
人工智能·后端·架构
光头闪亮亮2 小时前
Fyne ( go跨平台GUI )项目实战-项目开发必备基础知识(下)
android·c++·go
林泽毅3 小时前
PyTRIO快速入门(二):Datum构建
人工智能·算法·产品
金斗潼关3 小时前
使用MLP神经网络模型预测质数
人工智能·深度学习·神经网络