1.感知哈希(pHash)算法的Opencv实现
均值Hash算法
- //均值Hash算法
- string HashValue(Mat &src)
- {
- string rst(64,'\0');
- Mat img;
- if(src.channels()==3)
- cvtColor(src,img,CV_BGR2GRAY);
- else
- img=src.clone();
- /*第一步,缩小尺寸。
- 将图片缩小到8x8的尺寸,总共64个像素,去除图片的细节*/
- resize(img,img,Size(8,8));
- /* 第二步,简化色彩(Color Reduce)。
- 将缩小后的图片,转为64级灰度。*/
- uchar *pData;
- for(int i=0;i<img.rows;i++)
- {
- pData = img.ptr<uchar>(i);
- for(int j=0;j<img.cols;j++)
- {
- pData[j]=pData[j]/4; }
- }
- /* 第三步,计算平均值。