资源简介
此代码为常规特征图像检索核心代码(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个文件信息
评论
共有 条评论