• 大小: 10.78MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-10-09
  • 语言: C/C++
  • 标签: 图像检索  

资源简介

此代码为常规特征图像检索核心代码(c++),基于opencv,包括均匀hash,感知hash,颜色直方图,希望对你有一定帮助。

资源截图

代码片段和文件信息

#include 
#include 
#include 
#include 
#include 
#include 
#include 

using namespace std;
using namespace cv;

#define hashLength 64


// 计算8*8图像的平均灰度
float calcAverage(Mat_ image const int &size){
float sum = 0;
for(int i = 0 ; i < size; i++){
for(int j = 0; j < size; j++){
sum += image(i j);
}
}
return sum/(size*size);
}

/* 计算hash值
image:8*8的灰度图像
size: 图像大小  8*8
ahahs:存放64位hash值
averagePix: 灰度值的平均值
*/
void fingerPrint(Mat_ image const int &size bitset &ahash const float &averagePix){
for(int i = 0; i < size; i++){
int pos = i * size;
for(int j = 0; j < size; j++){
ahash[pos+j] = image(i j) >= averagePix ? 1:0;
}
}
}

/*计算汉明距离*/
int hammingDistance(const bitset &query const bitset &target){
int distance = 0;
for(int i = 0; i < hashLength; i++){
distance += (query[i] == target[i] ? 0 : 1);
}
return distance;
}

string bitTohex(const bitset &target){
string str;
for(int i = 0; i < hashLength; i=i+4){
int sum = 0;
string s;
sum += target[i] + (target[i+1]<<1) + (target[i+2]<<2) + (target[i+3]<<3);
stringstream ss;
ss << hex < ss >> s;
str += s;
}
return str;
}

int main(){
Mat img = imread(“E:\\algorithmZack\\ImageSearch\\image\\person.jpg“ 1);
if(!img.data){
cout << “the image is not exist“ << endl;
return 0;
}
int size = 8;  // 图片缩放后大小

resize(img img Size(sizesize));      // 缩放到8*8
cvtColor(img img COLOR_BGR2GRAY);       // 灰度化
float averagePix = calcAverage(img size);    // 计算灰度化的均值
//cout << averagePix << endl;
bitset ahash;               
fingerPrint(img size ahash averagePix);    // 得到均值hash
//cout << ahash << endl;
cout << bitTohex(ahash) << endl;

string img_dir = “E:\\algorithmZack\\ImageSearch\\image\\“;
for(int i = 1; i <= 8; i++){
string pos;
stringstream ss;
ss << i;
ss >> pos;
string img_name = img_dir + “person“ + pos +“.jpg“; 
Mat target = imread(img_name 1);
if(!target.data){
cout << “the target image“ << img_name << “ is not exist“ << endl;
continue;
}
resize(target target Size(sizesize));
cvtColor(target target COLOR_BGR2GRAY);
float averagePix2 = calcAverage(target size);
bitset ahash2;
fingerPrint(target size ahash2 averagePix2);

//cout << averagePix2 << endl;
int distance = hammingDistance(ahash ahash2);      // 计算汉明距离
cout <<“【“ << i <<“-“ <<  distance << “】 “;
}
cout << endl;
return 0;

}

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

     文件      69007  2012-11-24 23:37  ImageSearch\image\person.jpg

     文件      69007  2012-11-24 23:37  ImageSearch\image\person0.jpg

     文件       2143  2012-11-24 23:37  ImageSearch\image\person1.jpg

     文件      71474  2015-05-17 10:25  ImageSearch\image\person10.jpg

     文件      70540  2015-05-17 10:25  ImageSearch\image\person11.jpg

     文件      48576  2015-05-17 22:37  ImageSearch\image\person12.jpg

     文件      80161  2015-05-17 22:37  ImageSearch\image\person13.jpg

     文件      19396  2015-05-17 22:37  ImageSearch\image\person14.jpg

     文件      92232  2015-05-17 22:38  ImageSearch\image\person15.jpg

     文件      44889  2015-05-17 22:39  ImageSearch\image\person16.jpg

     文件      20810  2015-05-17 22:39  ImageSearch\image\person17.jpg

     文件     165284  2015-05-17 22:40  ImageSearch\image\person18.jpg

     文件      40184  2015-05-17 22:40  ImageSearch\image\person19.jpg

     文件      24294  2015-04-17 20:35  ImageSearch\image\person2.jpg

     文件       1847  2012-11-24 23:37  ImageSearch\image\person3.jpg

     文件       1143  2012-11-24 23:37  ImageSearch\image\person4.jpg

     文件      11408  2015-04-17 20:36  ImageSearch\image\person5.jpg

     文件      71220  2015-04-17 20:36  ImageSearch\image\person6.jpg

     文件      47657  2011-09-15 14:10  ImageSearch\image\person7.jpg

     文件      10474  2015-04-15 15:42  ImageSearch\image\person8.jpg

     文件      69478  2015-05-17 10:25  ImageSearch\image\person9.jpg

     文件       2799  2015-04-17 20:37  ImageSearch\ImageSearch\averageHash.cpp

     文件       3004  2015-05-17 22:48  ImageSearch\ImageSearch\coloHistogram2.cpp

     文件       3221  2015-05-17 22:50  ImageSearch\ImageSearch\colorHistgoram.cpp

     文件       5051  2015-05-17 22:47  ImageSearch\ImageSearch\ImageSearch.vcxproj

     文件       1243  2015-05-17 18:57  ImageSearch\ImageSearch\ImageSearch.vcxproj.filters

     文件        143  2015-04-17 12:19  ImageSearch\ImageSearch\ImageSearch.vcxproj.user

     文件       4689  2015-05-17 22:08  ImageSearch\ImageSearch\perceptualHash.cpp

     文件   19746816  2015-05-17 22:54  ImageSearch\ImageSearch.sdf

     文件        900  2015-04-17 12:19  ImageSearch\ImageSearch.sln

............此处省略10个文件信息

评论

共有 条评论