OpenCV双边滤波测试

OpenCV双边滤波测试

测试代码

#include <opencv2/opencv.hpp>

using namespace std;
using namespace cv;

#define dbg(fmt,...) do{printf("[DEBUG %s:%d] " fmt "\n", __FUNCTION__, __LINE__, ##__VA_ARGS__);}while(0)
#define info(fmt,...) do{printf("[INFO  %s:%d] " fmt "\n", __FUNCTION__, __LINE__, ##__VA_ARGS__);}while(0)
#define warn(fmt,...) do{printf("[WARN  %s:%d] " fmt "\n", __FUNCTION__, __LINE__, ##__VA_ARGS__);}while(0)
#define err(fmt,...) do{printf("[ERROR %s:%d] " fmt "\n", __FUNCTION__, __LINE__, ##__VA_ARGS__);}while(0)


#define IMG_FILE  "001.png"

static void _TrackbarCallback (int pos, void* userdata)
{
    int* bChanged = (int*)userdata;
    *bChanged = 1;
}

int BilateralFilterTest()
{
    Mat img0, img;
    const char* winName = "BilateralFilterTest";
    const char* tbNameD = "d";
    const char* tbNameSigmaColor = "sigmaColor";
    const char* tbNameSigmaSpace = "sigmaSpace";
    int tbValueD = 3;
    int tbValueSigmaColor = 0;
    int tbValueSigmaSpace = 0;
    int tbChanged = 1;

    img0 = imread(IMG_FILE);
    if (img0.empty()) {
        err("imread %s failed", IMG_FILE);
        goto _exit;
    }
    imshow("原图", img0);

    namedWindow(winName);
    createTrackbar(tbNameD, winName, &tbValueD, 30, _TrackbarCallback, &tbChanged);
    createTrackbar(tbNameSigmaColor, winName, &tbValueSigmaColor, 1000, _TrackbarCallback, &tbChanged);
    createTrackbar(tbNameSigmaSpace, winName, &tbValueSigmaSpace, 1000, _TrackbarCallback, &tbChanged);

    img = img0.clone();
    imshow(winName, img);

    while (1) {
        if (tbChanged) {
            int d = tbValueD / 2 * 2 + 1;
            double sigmaColor = tbValueSigmaColor / 10.0;
            double sigmaSpace = tbValueSigmaSpace / 10.0;
            dbg("bilateralFilter d:%d sigmaColor:%f sigmaSpace:%f", d, sigmaColor, sigmaSpace);
            bilateralFilter(img0, img, d, sigmaColor, sigmaSpace);
            imshow(winName, img);
            tbChanged = 0;
        }
        if (waitKey(100) > 0)
            break;
    }

_exit:
    destroyAllWindows();
    dbg("例程退出");
    getchar();
    return 0;
}

运行效果

这里写图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值