OpenCV - 如何正确调用 bm3dDenoising()?

OpenCV - How to properly call bm3dDenoising()?

我想 运行 在 BM3D 去噪过滤器.

中编写一个小的 OpenCV 脚本

我无法在 OpenCV 中正确调用此函数。

bm3dDenoising()

有人能帮帮我吗?关于 includenamespace?

#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/photo/photo.hpp>
#include <math.h>

using namespace cv::xphoto;
using namespace std;

int main()
{
    //Load an Image
    Mat img = imread("C:\image2.jpg", CV_LOAD_IMAGE_COLOR);
    namedWindow("Image", CV_WINDOW_AUTOSIZE);
    imshow("Image", img);


    //Blur Effect
    GaussianBlur(img, img, cv::Size(3, 3), 0);
    cv::xphoto::bm3dDenoising(img, img);  // ???? 

    namedWindow("Output", CV_WINDOW_AUTOSIZE);
    imshow("Output", img);

    //Wait Key press
    cvWaitKey(0);

    //destroy
    cvDestroyWindow("Image");
    cvDestroyWindow("BlurEffect");

    return 0;
}

你的错误是什么?如果是error: ‘cv::xphoto’ has not been declared是编译错误,不是链接器错误。可能是您的编译器无法查找 cv::xphoto.

的定义

尝试给出明确的路径。 #include "path/opencv2/.....h"

或在 -I 开关中提供包含路径。

g++ -I *.cpp -l -o

希望对您有所帮助。

您可能缺少 OpenCV 额外模块,即 opencv_contrib:https://github.com/opencv/opencv_contrib

准备好开发环境后,您可以看一下示例代码: https://github.com/opencv/opencv_contrib/blob/master/modules/xphoto/test/test_denoise_bm3d.cpp