将一段C++版的pHash算法翻译为C#版的
时间: 2019-03-15来源:开源中国
HDC调试需求开发(15万预算),能者速来!>>>
pHash算法的C++代码如下:
```
//pHash算法
string pHashValue(Mat &src)
{
Mat img ,dst;
string rst(64,'\0');
double dIdex[64];
double mean = 0.0;
int k = 0;
if(src.channels()==3)
{
cvtColor(src,src,CV_BGR2GRAY);
img = Mat_<double>(src);
}
else
{
img = Mat_<double>(src);
}

/* 第一步,缩放尺寸*/
resize(img, img, Size(8,8));

/* 第二步,离散余弦变换,DCT系数求取*/
dct(img, dst);

/* 第三步,求取DCT系数均值(左上角8*8区块的DCT系数)*/
for (int i = 0; i < 8; ++i) {
for (int j = 0; j < 8; ++j)
{
dIdex[k] = dst.at<double>(i, j);
mean += dst.at<double>(i, j)/64;
++k;
}
}

/* 第四步,计算哈希值。*/
for (int i =0;i<64;++i)
{
if (dIdex[i]>=mean)
{
rst[i]='1';
}
else
{
rst[i]='0';
}
}
return rst;
}
```
翻译为C#版后无法运行,哪位达者帮忙给翻译一下。感谢!!
热门排行