我想知道是否还有另一种方法可以在Opencv中创建每个像素的查找表。我现在对小分辨率(每秒约4帧)可以正常工作,但在高分辨率(每秒不到1帧)上却很慢。
我已阅读到可以使用CUDA,但不知道如何使用它。如果这是唯一的方法,那么有人可以指出正确的方向吗?谢谢。
In header file:
Mat_<Vec<uchar,256>> _GB;
Mat_<Vec<uchar,256>> _GG;
Mat_<Vec<uchar,256>> _GR;
…
Mat VideoProcessor::CamCalib(Mat _tempFrame)
{
Mat_<Vec3b> _frame = _tempFrame;
for( int i = 0; i < _tempFrame.rows; ++i)
for( int j = 0; j < _tempFrame.cols; ++j )
{
_frame(i,j)[0] = _GB(i,j)[ _frame(i,j)[0] ];
_frame(i,j)[1] = _GG(i,j)[ _frame(i,j)[1] ];
_frame(i,j)[2] = _GR(i,j)[ _frame(i,j)[2] ];
}
_tempFrame = _frame;
return _tempFrame;
}
感谢杰罗姆,我听了你的建议。一个简单的实现,性能提高了25%。对我来说,由于我正在使用软件镜头校正来进行实时图像捕获,因此内存不如速度那样昂贵。
所以这就是我添加的内容:
已添加到Pro文件中:QMAKE_CXXFLAGS + = -openmp
在CPP文件中添加:#include“ omp.h”...并在方法中的“ for循环”之前添加:#pragma omp parallel for