1.在Qt工程中使用OpenMP,及编译报错解决办法_qt使用openmp_来份西红柿炒番茄的博客-CSDN博客
int num_threads = omp_get_num_procs();
#pragma omp parallel for num_threads(num_threads)
for (int j=0;j<inMat.rows;j++) {
float* inPtr = inMat.ptr<float>(j);
float* outPtr = outMat.ptr<float>(j);
for (int i=0;i<inMat.cols;i++) {
for (int channel=0;channel<inMat.channels();channel++) {
float inData = (float)inPtr[i* inMat.channels()+channel];
cv::Mat paramMat = vecPolyCoeffsMat[i][channel];//paramMat 为3*1的矩阵 对应多项式参数a,b,c
for (int order=0;order<paramMat.rows;order++) {
outPtr[i* inMat.channels()+channel] += paramMat.at<float>(order,0)*pow(inData,order);
}
}
}
//std::cout<<outMat.at<cv::Vec3f>(j,0)[0]<<endl;
//std::cout<<"..........................................."<<endl;
}
计算时间大概可以加快一倍时间
cv::Mat初始
方式一:cv::Mat normalizedMat = cv::Mat::ones(_lines, _pixels, CV_16UC(_channel));
会报错:
cv::Mat初始化 Error: Assertion failed (cn <= 4)
通道数不能大于4
方式二:cv::Mat normalizedMat = cv::Mat(_lines, _pixels, CV_MAKETYPE(CV_16U, _channel), cv::Scalar(0));
不受通道数限制