自己开个博客,将每天学习到的东西都贴在上面。和大家进行交流。
下面是我写的最近插值算法,算法是c语言写的。希望大家用得着。
/** 内容:最近插值算法的实现 补充:opencv加c语言 作者: 时间:2014.11.3 **/ #include"cv.h" #include"highgui.h" #define min(a,b) (((a) < (b)) ? (a) : (b)) int main() { IplImage *src=cvLoadImage("pp.jpg"); IplImage *dst; //scale是缩放比例 double scale=2; //变量存储目标图像大小 CvSize dst_cvsize; dst_cvsize.width=(int)(src->width*scale); dst_cvsize.height=(int)(src->height*scale); dst=cvCreateImage(dst_cvsize,src->depth,src->nChannels); double scale_x=(double)src->width/dst->width; double scale_y=(double)src->height/dst->height; if(scale_x==0||scale_y==0) printf("程序错误\n"); for(int i=0;iwidth;i++) { double Md_sx=i*scale_x; int sx=(int)(i*scale_x); if(sx>Md_sx) {sx=sx-1;} sx=min(sx , src->width-1); for(int j=0;jheight;j++) { double Md_sy=i*scale_x; int sy=(int)(j*scale_y); if(sy>Md_sy) {sy=sy-1;} sy=min(sy , src->height-1); cvSet2D(dst,j,i,cvGet2D(src,sy,sx)); } } cvNamedWindow( "原始图像", 1 );//创建窗口 cvShowImage( "原始图像", src);//显示图像 cvNamedWindow( "最近邻插值", 1 );//创建窗口 cvShowImage( "最近邻插值", dst);//显示图像 cvWaitKey(0); //等待按键 cvDestroyWindow( "原始图像" ); cvReleaseImage( &src ); //释放图像 cvDestroyWindow( "最近邻插值" );//销毁窗口 cvReleaseImage( &dst); //释放图像 return 0; }