void jzbtransfer(Mat src, Mat dst,double b,CvPoint pt) { /*CvSize size=cvGetSize(src);*/ int r=pt.x-1; if (r>pt.y-1) { r=pt.y-1; } if (r>src.cols-pt.x) { r=src.cols-pt.x; } if (r>src.rows-pt.y) { r=src.rows-pt.y; } int h=(int)360/b; //BwImageDouble imga(src); //BwImageDouble imgb(dst); double fx,fy,rx,ry,dx,dy; int x,y,i,j; for (i=0;i<r+1;i++) { //double *data1=src.ptr(double)(i); //double *data2=dst.ptr(double)(i); for (j=1;j<h;j++) { fx=pt.y-i*sin(3.1416*j*b/180); fy=pt.x+i*cos(3.1416*j*b/180); rx=floor(fx); ry=floor(fy); x=(int)rx; y=(int)ry; dx=fx-rx;/////////////// dy=fy-ry; dst.at<double>(i,j)=(1-dx)*(1-dy)*src.at<double>(x,y)+dx*dy*src.at<double>(x+1,y+1)+dx*(1-dy)*src.at<double>(x,y+1)+(1-dx)*dy*src.at<double>(x+1,y); } } for (int i=0;i<h;i++) { dst.at<double>(0,i)=src.at<double>(pt.y,pt.x);///////// } } |
|