global void features_4bin_sparse(uchar* img, int srcWidth,int srcHeight,uchar* locaMat,float* hist,floatvx,floatvy,int* vxp,int* vyp)
{
int best_o;
int y=threadIdx.x;
int x=blockIdx.x;
if (x<gridDim.x-1 && x>0 && y>0 && y<blockDim.x-1)
{
int block0 = blockDim.x/4;
int block1 = gridDim.x/4;
uchar *s = img + min(x, srcWidth-2)*3 + min(y, srcHeight-2)srcWidth3;
int dy = (s+srcWidth3) - (s-srcWidth3); //上下之差
int dx = (s+3) - (s-3); //左右之差
float v = sqrt((float)(dxdx + dydy));
best_o = locaMat[(255-dy)*511+(dx+255)];
if (x==2&&y==10)
{
(hist+2) = best_o; // (hist+2) 得到是0.000000
//(hist+2) = vxp[x]block0 + vxp[y]; 得到的是2.000000
//(hist+2) = block0block1; 得到 13580.000000
//*(hist+2) = vxpblock0 + vxp[y] +block0block1; 得到 13582.000000
// 问题出现了,当我使用下面的时
// (hist+2) = vxp[x]block0 + vxp[y] +block0block1best_o; 得到的是0.000000
}
}
}
最后一个 // (hist+2) = vxp[x]block0 + vxp[y] +block0block1best_o; 得到的是0.000000
为啥不是 2.000000呢,很奇怪