OpenCV之像素访问优化

优化基本原则:
1.减少多层循环的使用
2.尽量使用位运算
基于以上原则,可将之前几篇博文中介绍的Color Reduce算法代码改为:
voidcolorReduce5(Mat&image, intn=6) {
intnl= image.rows;
intnc= image.cols;
intdiv = (int)pow(2.0f,n);
ucharmask = 0xFF<<n;
if(image.isContinuous())
{
nc=nl*nc;
nl=1;
}
for(int j=0;j<nl;j++)
{
uchar*data= image.ptr<uchar>(j);
for(int i=0;i<nc;i++) {
*data++= *data&mask+ div/2;
*data++= *data&mask+ div/2;
*data++= *data&mask+ div/2;
}
}
}
 
执行效率测试对比
测试环境:
图像:500*338pixel
CPU:Pentium(R)  Dual-Core CPU E5800  3.20GHz
测试结果:
ColorReduce10.00225389ms
ColorReduce20.00215909ms
ColorReduce30.00180068ms
ColorReduce4
0.0830474ms
ColorReduce5
0.00131263ms
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值