我使用以下方法获取一组 cv::Mat 的统计模式:
vector<Mat> imgs(30);
...
...
Mat mode = Mat::zeros(imgRows, imgCols, CV_8U);
for(int i=0;i<mode.rows;i++)
{
for(int j=0;j<mode.cols;j++)
{
vector<int>count(256,0);
int maxIndex=0, maxCount=0;
int index;
for(int n=0;n<imgs.size();n++)
{
index = imgs[n].at<uchar>(i,j);
count[index]++;
if(count[index] > maxCount)
{
maxCount = count[index];
maxIndex = index;
}
}
mode.at<uchar>(i,j) = maxIndex;
}
}
有没有其他方法可以更有效地计算模式?
计算直方图并使用直方图中的峰值。您可以修改 opencv 已经提供的代码以计算模式。本页还介绍了直方图及其使用方法。