Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/161.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ OpenCV(C+;+;)-彩色图像的白化变换_C++_Opencv_Opencv3.0 - Fatal编程技术网

C++ OpenCV(C+;+;)-彩色图像的白化变换

C++ OpenCV(C+;+;)-彩色图像的白化变换,c++,opencv,opencv3.0,C++,Opencv,Opencv3.0,是否有一个内置函数可以在具有3个通道的cv::Mat上应用白化转换? 我希望图像具有零平均值和单位方差。最接近您想要的选项(我知道)是使用cv::meanstdev(它可以处理多通道图像),然后手动减去平均值并除以每个通道的方差 cv::Mat增白(cv::Mat图像) cv::Mat Whiten(cv::Mat image) { image.convertTo(image, CV_32F); cv::Mat mu, sigma; cv::meanStdDev(ima

是否有一个内置函数可以在具有3个通道的
cv::Mat
上应用白化转换?
我希望图像具有零平均值和单位方差。

最接近您想要的选项(我知道)是使用
cv::meanstdev
(它可以处理多通道图像),然后手动减去平均值并除以每个通道的方差

cv::Mat增白(cv::Mat图像)
cv::Mat Whiten(cv::Mat image)
{
    image.convertTo(image, CV_32F);

    cv::Mat mu, sigma;
    cv::meanStdDev(image, mu, sigma);

    std::vector<cv::Mat> channels;
    cv::split(image, channels);
    for (int i = 0; i < channels.size(); ++i)
        channels[i] = (channels[i] - mu.at<double>(i, 0)) / sigma.at<double>(i, 0);
    cv::merge(channels, image);

    return image;
}
{ 图像.convertTo(图像,CV_32F); cv::Mat mu,sigma; cv::meanStdDev(图像、mu、sigma); 矢量信道; cv::分割(图像、通道); 对于(int i=0;i