OpenCV 计算图片相似度

来源:互联网 发布:棍棒底下出孝子 知乎 编辑:程序博客网 时间:2024/04/29 15:33

思路:

利用直方图比较两张图片的相似度。

代码:

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;}


0 0