// 700 ms
cv::Mat in(height,width,CV_8UC1);
in /= 4;
替换为
//40 ms
cv::Mat in(height,width,CV_8UC1);
for (int y=0; y < in.rows; ++y)
{
unsigned char* ptr = in.data + y*in.step1();
for (int x=0; x < in.cols; ++x)
{
ptr[x] /= 4;
}
}
什么可能引起这样的行为?是由于opencv将Scalar乘法“升级”为Mat乘法,还是由于针对arm的特定失败优化?(启用了NEON)。
operator /
。因此,您机器上的双精度除法计算可能比整数除法慢约20倍? - Micka