#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <iostream>
#include <random>

cv::Point3f addGaussianNoise(cv::Point3f point, float noiseLevel)
{
    // Create a random number generator
    std::default_random_engine generator;
    std::normal_distribution<float> distribution(0.0f, noiseLevel);

    // Add noise to each coordinate separately
    point.x += distribution(generator);
    point.y += distribution(generator);
    point.z += distribution(generator);

    return point;
}

int main()
{
    // Create a sample point
    cv::Point3f point(1.0f, 2.0f, 3.0f);

    // Add noise to the point
    float noiseLevel = 0.1f;
    cv::Point3f noisyPoint = addGaussianNoise(point, noiseLevel);

    // Print the results
    std::cout << "Original point: (" << point.x << ", " << point.y << ", " << point.z << ")" << std::endl;
    std::cout << "Noisy point: (" << noisyPoint.x << ", " << noisyPoint.y << ", " << noisyPoint.z << ")" << std::endl;

    return 0;
}

This code defines a function 'addGaussianNoise' that takes a 'cv::Point3f' and a 'noiseLevel' as input. It creates a random number generator using 'std::default_random_engine' and 'std::normal_distribution' from the '' header. The function then adds noise to each coordinate separately by generating a random number from the normal distribution and adding it to the coordinate. Finally, it returns the noisy point.

In the 'main' function, we create a sample point and add noise to it using the 'addGaussianNoise' function. We then print the original and noisy points to the console.

Note that the amount of noise added is controlled by the 'noiseLevel' parameter. This parameter specifies the standard deviation of the normal distribution used to generate the noise. A higher value of 'noiseLevel' will result in more noise being added to the point.

C++ OpenCV: Adding Gaussian Noise to cv::Point3f

原文地址: https://www.cveoy.top/t/topic/odts 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录