涤风 2024-04-02 16:21 采纳率: 100%
浏览 1
已结题

std::accumulate数据上溢,求解?

std::vector<uchar> vChannel(hsv.rows * hsv.cols);
// std::vector<double> ivChannel(hsv.rows * hsv.cols);
for (int y = 0; y < hsv.rows; ++y) {
      for (int x = 0; x < hsv.cols; ++x) {
            vChannel[y * hsv.cols + x] = hsv.at<cv::Vec3b>(y, x)[2];
            // ivChannel[y * hsv.cols + x] = (double)vChannel[y * hsv.cols + x];
       }
}
double vAvg = static_cast<double>(std::accumulate(vChannel.begin(), vChannel.end(), 0)) / vChannel.size();
// double vAvg = static_cast<double>(std::accumulate(ivChannel.begin(), ivChannel.end(), 0)) / ivChannel.size();

 std::cout << vAvg << "\t ";

不论是用上面未注释的代码,还是注释掉的代码,vAvg都会返回负值。
已验证vChannel中所有均为正数。
求问为啥上溢?std::accumulate有隐式数据类型转换?

  • 写回答

4条回答 默认 最新

  • 涤风 2024-04-02 16:30
    关注

    已解决,是我忘记修改accumulate的第三个参数了,uchar应该改成0LL,double应该改成0.0

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 4月10日
  • 已采纳回答 4月2日
  • 修改了问题 4月2日
  • 创建了问题 4月2日

悬赏问题

  • ¥15 关于logstash转发日志时发生的部分内容丢失问题
  • ¥17 pro*C预编译“闪回查询”报错SCN不能识别
  • ¥15 微信会员卡接入微信支付商户号收款
  • ¥15 如何获取烟草零售终端数据
  • ¥15 数学建模招标中位数问题
  • ¥15 phython路径名过长报错 不知道什么问题
  • ¥15 深度学习中模型转换该怎么实现
  • ¥15 Stata外部命令安装问题求帮助!
  • ¥15 从键盘随机输入A-H中的一串字符串,用七段数码管方法进行绘制。提交代码及运行截图。
  • ¥15 如何用python向钉钉机器人发送可以放大的图片?