Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/158.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_C++_Opencv_Video_Video Streaming - Fatal编程技术网

C++ 某些帧的平均值/使用c++;和opencv

C++ 某些帧的平均值/使用c++;和opencv,c++,opencv,video,video-streaming,C++,Opencv,Video,Video Streaming,我想得到5帧的平均值,它们的Itime等于1000。我的代码中有什么问题?为什么我在retur部分出错 float Data::HighestTime(float *distances){ Mat mean_distances; if(Itime=1000){ for(int i=0; i<5; i++){ cv::Mat matDistances = Mat(width, height, CV_32

我想得到5帧的平均值,它们的Itime等于1000。我的代码中有什么问题?为什么我在retur部分出错

float Data::HighestTime(float *distances){
        Mat mean_distances; 
        if(Itime=1000){
            for(int i=0; i<5; i++){
                cv::Mat matDistances = Mat(width, height, CV_32FC1, distances);
                Mat mean_distances = matDistances;
                mean_distances = mean_distances * (1/5);

            }
        }
        return mean_distances;
    }
我想在此函数中使用其返回值:

cv::Mat Data::HighestTime(float* distances){
    Mat mean_distances; 
    return mean_distances;
}
void Data::Filter(){
  HighestTime(float* distances);
  medianBlur(mean_distances, mean_distances, ksize);
}

它抱怨没有定义平均距离!我应该将其定义为函数的参数吗?

您的函数确实返回类型为
float
的值。您得到一个编译器错误,因为您实际返回的是
mean_distance
,类型为
cv::Mat
。只需将方法的签名更改为
Mat Data::HighestTime(float*distance)
即可消除该错误


编辑:

至于你的第二个错误。实际上,您必须通过调用
HighestTime
保存返回的值。您的第二个函数应该如下所示:

void Data::Filter(){
  Mat mean_distances = HighestTime(float* distances);
  medianBlur(mean_distances, mean_distances, ksize);
}

有一些事情需要考虑。

Itime==1000
因为您不想将1000分配给Itime

此外,
浮动*距离是多少?我认为它是一个指向数组的指针,因此,您必须增加指针并使用
*(距离+I)

当你想计算平均值时,你必须计算平均值,方法如下:

  • 将所有值相加:
    meandistance+=matdistance
  • 将总和除以值的数量:
    meansdistance/=5.0f
    (此处需要5.0,因为您不希望使用类似于0的整数divison(1/5))

  • 我是否需要使用vector来存储每一帧?@aa我不了解您的问题当您遇到错误并需要解决方案时,最好也在初始问题中公布您遇到的错误。@a_a既然您看起来是初学者,您可能应该花些时间学习编程的基础知识,以避免所有这些问题您正在产生的简单错误。这不是一个让别人编写代码的平台!
    void Data::Filter(){
      Mat mean_distances = HighestTime(float* distances);
      medianBlur(mean_distances, mean_distances, ksize);
    }