Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/153.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++ 平均值、标准差等_C++_Opencv - Fatal编程技术网

C++ 平均值、标准差等

C++ 平均值、标准差等,c++,opencv,C++,Opencv,嘿,我得解决一些问题。我加载两个图像并将它们转换为float。然后我把颜色空间转换成实验室。我把颜色空间分割成通道。 现在我想用输入(图像)的平均值减去每个通道输入(图像)的平均值(因此新的平均值为0) 将输入除以自身的标准偏差(因此新的标准偏差为0) 你有什么建议我怎样才能做到这一点 #include <opencv2/core.hpp> #include "opencv2/imgcodecs.hpp" #include "opencv2/opencv

嘿,我得解决一些问题。我加载两个图像并将它们转换为float。然后我把颜色空间转换成实验室。我把颜色空间分割成通道。 现在我想用输入(图像)的平均值减去每个通道输入(图像)的平均值(因此新的平均值为0) 将输入除以自身的标准偏差(因此新的标准偏差为0)

你有什么建议我怎样才能做到这一点

#include <opencv2/core.hpp>
#include "opencv2/imgcodecs.hpp"
#include "opencv2/opencv.hpp"


using namespace std;
using namespace cv;



int main() {

    //Bilder hochladen
    Mat input = imread("C:\\Users\\...\\Desktop\\..\\input.png");
    Mat target = imread("C:\\Users\\...\\Desktop\\..\\target.png");

    // In Fliesskommazahlen umwandeln
    input.convertTo(input, CV_32FC3, 1.0 / 255); 
    target.convertTo(target, CV_32FC3, 1.0 / 255);


    //Konvertieren Sie beide Bilder in den Lab-Farbraum

    cvtColor(input, input, COLOR_BGR2Lab);
    cvtColor(target, target, COLOR_BGR2Lab);


    vector<Mat> channels;
    split(input, channels);
    Scalar m = mean(channels[0]);
    

//My try to substrct the average value for every channel
        m[0] = m[0] - m[0];
        cout << m[0] << endl;

        m[1] = m[1] - m[1];
        cout << m[1] << endl;

        m[2] = m[2] - m[2];
        cout << m[2] << endl;



        




        cvtColor(input, input, COLOR_Lab2BGR);

    imshow("Ergebnis", input);
    waitKey(0);



    return 0;

}
#包括
#包括“opencv2/imgcodecs.hpp”
#包括“opencv2/opencv.hpp”
使用名称空间std;
使用名称空间cv;
int main(){
//比尔德霍奇拉德酒店
Mat input=imread(“C:\\Users\\\…\\Desktop\\\\\input.png”);
Mat target=imread(“C:\\Users\\\…\\Desktop\\\\\\target.png”);
//在飞行中
输入.convertTo(输入,CV_32FC3,1.0/255);
target.convertTo(target,CV_32FC3,1.0/255);
//你在实验室里工作吗
cvtColor(输入,输入,颜色);
CVT颜色(目标、目标、颜色);
矢量通道;
分割(输入,通道);
标量m=平均值(通道[0]);
//我尝试将每个通道的平均值细分
m[0]=m[0]-m[0];

cout
m[0]=m[0]-m[0];
——因此,通过从自身减去平均值,您有效地将刚刚计算的平均值设置为零。(其他部分有些冗余,因为您只计算了1个通道的平均值,所以它们已经为零)。如果我只使用
m[0]=m[0]-m[0]
我对每个频道都这样做?所以我只需要
m[0]=m[0]-m[0]
?我的英语不是最好的,但我试图理解
x=x-x
x=0
是一样的。你的描述说这就是你想要做的(“用输入(图像)的平均值减去每个频道的平均值)所以我猜你在什么地方误解了什么。好吧,这可能是错的。但是我如何解决这个问题-->现在我想用输入(图像)的平均值减去每个通道的输入(图像)的平均值(因此新的平均值是0),然后将输入除以自己的标准偏差(因此新的标准偏差为0)