直接给大家源码吧
void cvShiftDFT(CvArr* src_arr,CvArr* dst_arr)
{
CvMat* tmp;
CvMat q1stub,q2stub;
CvMat q3stub,q4stub;
CvMat d1stub,d2stub;
CvMat d3stub,d4stub;
CvMat* q1,*q2,*q3,*q4;
CvMat* d1,*d2,*d3,*d4;
CvSize size = cvGetSize(src_arr);
CvSize dst_size = cvGetSize(dst_arr);
int cy,cx;
if(src_arr==dst_arr)
{
tmp = cvCreateMat(size.height/2,size.width/2,cvGetElemType(src_arr));
}
cx = size.width/2;
cy = size.height/2;
q1 = cvGetSubRect(src_arr,&q1stub,cvRect(0,0,cx,cy));
q2 = cvGetSubRect(src_arr,&q2stub,cvRect(cx,0,cx,cy));
q3 = cvGetSubRect(src_arr,&q3stub,cvRect(cx,cy,cx,cy));
q4 = cvGetSubRect(src_arr,&q4stub,cvRect(0,cy,cx,cy));
d1 = cvGetSubRect(src_arr,&d1stub,cvRect(0,0,cx,cy));
d2 = cvGetSubRect(src_arr,&d2stub,cvRect(cx,0,cx,cy));
d3 = cvGetSubRect(src_arr,&d3stub,cvRect(cx,cy,cx,cy));
d4 = cvGetSubRect(src_arr,&am