C++ 某些帧的平均值/使用c++;和opencv
我想得到5帧的平均值,它们的Itime等于1000。我的代码中有什么问题?为什么我在retur部分出错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
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);
}