当我们需要对图像的每个像素点进行调整的时候,可以利用图像扫描的办法,先设置好lookup table(一般是一维数组)的值,然后用原图的每个像素点的值找到在lookup table里面的值进行替换,变成新图像。比如做颜色空间缩减操作的时候。
opencv库提供了一个叫cv::LUT() 的函数,可以通过预先设置lookup table,对图像进行调整。
代码示例如下,其中I为输入图像,J为输出图像:
Mat lookUpTable(1, 256, CV_8U);
uchar* p = lookUpTable.ptr();
for( int i = 0; i < 256; ++i)
p[i] = table[i];
LUT(I, lookUpTable, J);
当需要知道某个代码段的执行时间的时候,opencv也提供了相应的函数,先mark一下。getTickCount可以理解为cpu的敲钟次数,getTickFrequency可以理解为平均每秒敲了多少下,相除即可得到执行了多久。
double t;
t = (double)getTickCount();
// do something
t = ((double)getTickCount() - t)/getTickFrequency();