• 大小: 414KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-12
  • 语言: 其他
  • 标签: opencv  

资源简介

该压缩包包含编译方式,示例代码,只需拍两张图片即可比较,比较打印输出值小于10,即为相似图片。使用改代码的用户linux系统必须先安装opencv环境.

资源截图

代码片段和文件信息

// similarity.cpp : 定义控制台应用程序的入口点。
//

//#include “stdafx.h“
#include 
#include 
#include 
#include 

#pragma comment(lib“opencv_core2410d.lib“)          
#pragma comment(lib“opencv_highgui2410d.lib“)          
#pragma comment(lib“opencv_imgproc2410d.lib“)    


using namespace std;


int main(int argc char* argv[])
{

    string strSrcImageName1 = “pos11.jpg“;
    string strSrcImageName2 = “pos12.jpg“;
    cv::Mat matSrc matSrc1 matSrc2;

    //matSrc = cv::imread(strSrcImageName CV_LOAD_IMAGE_COLOR);
    //CV_Assert(matSrc.channels() == 3);
matSrc1 = cv::imread(strSrcImageName1 CV_LOAD_IMAGE_COLOR);
    if (matSrc1.empty())
    {
        cout<<“read failed“<< endl;
        return -1;
    }
matSrc2 = cv::imread(strSrcImageName2 CV_LOAD_IMAGE_COLOR);
    if (matSrc2.empty())
    {
        cout<<“read failed“<< endl;
        return -1;
    }

    cv::Mat matDst1 matDst2;

    cv::cvtColor(matSrc1 matDst1 CV_BGR2GRAY);
    cv::cvtColor(matSrc2 matDst2 CV_BGR2GRAY);

    int iAvg1 = 0 iAvg2 = 0;
    int arr1[64] arr2[64];

    for (int i = 0; i < 8; i++)
    {
        uchar* data1 = matDst1.ptr(i);
        uchar* data2 = matDst2.ptr(i);

        int tmp = i * 8;

        for (int j = 0; j < 8; j++) 
        {
            int tmp1 = tmp + j;

            arr1[tmp1] = data1[j] / 4 * 4;
            arr2[tmp1] = data2[j] / 4 * 4;

            iAvg1 += arr1[tmp1];
            iAvg2 += arr2[tmp1];
        }
    }

    iAvg1 /= 64;
    iAvg2 /= 64;

    for (int i = 0; i < 64; i++) 
    {
        arr1[i] = (arr1[i] >= iAvg1) ? 1 : 0;
        arr2[i] = (arr2[i] >= iAvg2) ? 1 : 0;
    }

    int iDiffNum = 0;

    for (int i = 0; i < 64; i++)
        if (arr1[i] != arr2[i])
            ++iDiffNum;

    cout<<“iDiffNum = “<
    if (iDiffNum <= 5)
        cout<<“two images are very similar!“<    else if (iDiffNum > 10)
        cout<<“they are two different images!“<    else
        cout<<“two image are somewhat similar!“<
   // getchar();
    return 0;
}

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件        277  2017-08-21 18:44  similarity\build_all.sh

     文件      72794  2017-08-21 18:41  similarity\similarity

     文件      84883  2017-08-21 18:19  similarity\pos1.jpg

     文件       2241  2017-08-21 18:41  similarity\similarity.cpp

     文件      84883  2017-08-21 18:19  similarity\pos2.jpg

     文件      82773  2017-08-21 18:40  similarity\pos11.jpg

     文件      82632  2017-08-21 18:20  similarity\pos22.jpg

     文件      82427  2017-08-21 18:40  similarity\pos12.jpg

     目录          0  2017-08-21 18:44  similarity

----------- ---------  ---------- -----  ----

               492910                    9


评论

共有 条评论