for循环

犯这么低级傻帽的错误。。。。
在三层for循环嵌套的时候记得各层的变量定义不能笼统的在for循环开始的时候就全部定义。这样的结果就是内层的for循环结果不会随着形参的改变而刷新。最后的到的结果会是所有结果的累加。

 double TotalGpp_ofslice = 0;

  for (uiEncCUOrder_Our = uiStartCUAddr / rpcPic->getNumPartInCU();
      uiEncCUOrder_Our < (uiBoundingCUAddr + (rpcPic->getNumPartInCU() - 1)) / rpcPic->getNumPartInCU();
      uiCUAddr = rpcPic->getPicSym()->getCUOrderMap(++uiEncCUOrder_Our))
  {
      TComDataCU*& pcCU = rpcPic->getCU(uiCUAddr);
      TEncRCSeq* encRCSeq;
      double AvgGpp_ofLCU = 0;
      double TotalGpp = 0;
      UInt  stride = rpcPic->getPicYuvOrg()->getStride();
      Pel*  pOrg = rpcPic->getPicYuvOrg()->getLumaAddr(uiCUAddr);
      printf("\n now is coding the %d LCU\n", uiEncCUOrder_Our);
      for (UInt y = 0; y < 64; y++)
      {

           double Totalline_Gpp = 0;
           for (UInt x = 0; x < 64; x++)
          {
              double Gppidx = 0;
               Gppidx = (abs((pOrg[x] - pOrg[x + 1])) + abs((pOrg[x] - (pOrg + stride)[x])));
              //cout << Gppidx << endl;
              Totalline_Gpp += Gppidx;//获得一整行的Gpp
              //cout << Totalline_Gpp << endl;
          }
           TotalGpp += Totalline_Gpp;//输出一个LCU的梯度
           //cout << TotalGpp << endl;
           pOrg += stride;
      }
      //cout << TotalGpp << endl;//整个LCU的Gpp
      AvgGpp_ofLCU = TotalGpp/(64*64);//整个的LCU的Gpp
      cout << AvgGpp_ofLCU << endl;
      TotalGpp_ofslice += AvgGpp_ofLCU;

   }
   cout << TotalGpp_ofslice << endl;//循环完之后得到的是整个slice的Gpp
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值