www.pudn.com > unwarped.rar > unwarped.cpp
#include#include #include #define pi 3.1415926 IplImage *img,*img0; int main(int argc,char **argv) { char *filename=argc>=2?argv[1]:(char *)"bmp1.bmp"; img=cvLoadImage(filename); if(img==0) return 0; cvNamedWindow("src",1); cvShowImage("src",img); int width=img->width; int height=img->height; double Xc=319; double Yc=239; int Rmax=210; int Rmin=90; int width1=ceil(2*pi*Rmax); int height1=ceil(Rmax-Rmin); CvSize size=cvSize(width1,height1); img0=cvCreateImage(size,IPL_DEPTH_8U,1); img0->origin=0; cvZero(img0); for(int i=0;i =0 && value_w_minus>=0 && value_h_plus imageData + img->widthStep*value_h_plus))[value_w_minus*3]*(value_w_plus-U)+ ((uchar *)(img->imageData+img->widthStep*value_h_plus))[value_w_plus*3]*(U-value_w_minus); float horiz2=((uchar *)(img->imageData+img->widthStep*value_h_minus))[value_w_minus*3]*(value_w_plus-U)+ ((uchar *)(img->imageData+img->widthStep*value_h_minus))[value_w_plus*3]*(U-value_w_minus); float vertical=horiz1*(V-value_h_minus)+horiz2*(value_h_plus-V); uchar vertical1=vertical; *(img0->imageData+img0->widthStep*(height1-j-1)+i)=vertical1; } else { *(img0->imageData+img0->widthStep*(height1-j-1)+i)=0; } } } cvNamedWindow("处理结果",1); cvShowImage("处理结果",img0); cvWaitKey(); cvDestroyWindow("处理结果"); cvDestroyWindow("src"); }