思路:
利用直方图比较两张图片的相似度。
代码:
double GetSim(const Mat& src1, const Mat& src2)
{
Mat matDst1, matDst2,matGray1,matGray2;
Size imageSize = cv::Size(100, 100);
if(matSrc1.channels() == 3)
cvtColor(matSrc1,matGray1,CV_RGB2GRAY);
if(matSrc2.channels() == 3)
cvtColor(matSrc2,matGray2,CV_RGB2GRAY);
resize(src1, matDst1, imageSize, 0, 0, cv::INTER_CUBIC);
resize(src2, matDst2, imageSize, 0, 0, cv::INTER_CUBIC);
int histSize = 256;
float range[] = {0, 256};
const float* histRange = {range};
Mat hist1, hist2;
calcHist(&matDst1, 1, 0, Mat(), hist1, 1, &histSize, &histRange, 1, 0);
normalize(hist1, hist1, 0, 1, NORM_MINMAX, -1, Mat());
calcHist(&matDst2, 1, 0, Mat(), hist2, 1, &histSize, &histRange, 1, 0);
normalize(hist2, hist2, 0, 1, NORM_MINMAX, -1, Mat());
double Similarity = compareHist(hist1, hist2, CV_COMP_CORREL);
return Similarity;
}