【问题标题】:sum a sequence of frames using opencv/c++使用 opencv/c++ 对帧序列求和
【发布时间】:2013-12-13 08:07:49
【问题描述】:

我想实时汇总 4 帧中的所有值。当前帧和之前的 3 帧。为此,每次生成当前农场时,我都会将其存储在一个名为 Nframe 的向量中。这是我到目前为止所做的,但似乎不正确..

float *amp;   //points to the current frame
vector<float *>Nframe;

   for(int i=0; i<4; i++){
           Nframe.push_back(amp);
        }

         int sum_of_elems=0;
         for(std::vector<int>::iterator j=Nframe.begin();j!=Nframe.end();++j){
         sum_of_elems += *j;
         }

【问题讨论】:

  • 不是push_back(*amp)吗?
  • 什么意思?不正确?
  • 可以出示NFrames的声明吗?
  • 向量Nframe;
  • “但似乎不正确..” - 这是一个非常模糊的陈述。不对怎么办?程序不能编译吗?如果是这样,你会得到什么编译器错误?它不运行吗?如果是这样,它会给出什么错误?或者你没有得到预期的行为 - 如果是后者,你得到什么输出以及你期望什么?

标签: c++ opencv vector


【解决方案1】:

我认为问题是

std::vector&lt;int&gt;::iterator j=Nframe.begin();

基本上是说指向int的指针=指向float的指针

iterator to int = iterator to float*

这是错误的。

改成这样的

float sum_of_elems=0.0; // make it float
     for(std::vector<float*>::iterator j=Nframe.begin();j!=Nframe.end();++j){// make iterator to float*
     sum_of_elems += **j;

【讨论】:

  • 我没有收到任何错误,但仍然不知道它是否工作正常..关于整个算法..我在做什么是正确的?从实时视频处理的角度来看..?
  • 除非我知道你在做什么,否则我不能说。这段代码没问题,它添加了 4 个浮点数。但除此之外,我不知道。对不起。还有,当你说框架不应该意味着图像?
【解决方案2】:

变量 amp 被定义为指向浮点数的指针。所以我假设向量 Nframe 被定义(或应该被定义)为std::vector&lt;float *&gt;

在这种情况下,代码将如下所示

     float sum_of_elems = 0.0f;
     for ( auto value : Nframe ) sum_of_elems += *value;

【讨论】:

  • 应该在哪里声明“价值”?
  • 所谓基于范围的for语句。您的编译器应支持 C++ 2011 标准。您可以将循环更改为以下内容: for ( std::vector it = Nframe.begin(); it != Nframe.end(); ++it ) sum_of_elems += *it;
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-02-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-07-01
  • 1970-01-01
  • 2022-06-20
相关资源
最近更新 更多