各位大侠:
    
         谁能告诉我opencv图像平移函数是什么?非常感谢!!!

解决方案 »

  1.   

    图像平移?
    cvTransform应该可以吧
      

  2.   

    #include "cv.h"
    #include<stdio.h> 
    #include "highgui.h"#pragma comment(lib,"cv.lib")
    #pragma comment(lib,"cxcore.lib")
    #pragma comment(lib,"highgui.lib")IplImage *moveImage(IplImage *src,int h0,int w0);
    int main(int argc, char** argv)
    {

    IplImage* pImg; //声明IplImage指针
    IplImage* pImgAfterMove;
    pImg=cvLoadImage("Sunset.jpg");
    pImgAfterMove=cvCloneImage(pImg);
    cvSetZero(pImgAfterMove);
    pImgAfterMove=moveImage(pImg,100,-100);

    cvNamedWindow("aa",CV_WINDOW_AUTOSIZE);
    cvShowImage("aa",pImg );
    cvNamedWindow("bb",CV_WINDOW_AUTOSIZE);
    cvShowImage("bb",pImgAfterMove);
    cvWaitKey(0); //等待按键

    cvDestroyWindow( "aa" );//销毁窗口
        cvDestroyWindow( "bb" );
    cvReleaseImage( &pImg ); //释放图像
    cvReleaseImage( &pImgAfterMove );
    return 0;
    }//该函数的功能是实现图像的平移
    //规定向下、向右为(正,正)
    IplImage *moveImage(IplImage *src,int h0,int w0)
    {
    int h=h0;
    int w=w0;
    int imageHeight=src->height;
    int imageWidth=src->width;
    int i,j;

    CvScalar sTemp;

    IplImage *dst=cvCloneImage(src);
    cvSetZero(dst);

    if (h>=0 && w>=0)
    {
    //
    for (i=0;i<imageHeight-h;i++)
    {
    for (j=0;j<imageWidth-w;j++)
    {
    sTemp=cvGet2D(src,i,j);
    cvSet2D(dst,i+h,j+w,sTemp);
    }
    }
    }
    else if (h<0 && w>=0)
    {
    for (i=-h;i<imageHeight;i++)
    {
    for (j=0;j<imageWidth-w;j++)
    {
    sTemp=cvGet2D(src,i,j);
    cvSet2D(dst,i+h,j+w,sTemp);
    }
    }
    }
    else if (h>=0 && w<0)
    {
    //
    for (i=0;i<imageHeight-h;i++)
    {
    for (j=-w;j<imageWidth;j++)
    {
    sTemp=cvGet2D(src,i,j);
    cvSet2D(dst,i+h,j+w,sTemp);
    }
    }
    }
    else if (h<0 && w<0)
    {
    //
    for (i=-h;i<imageHeight;i++)
    {
    for (j=-w;j<imageWidth;j++)
    {
    sTemp=cvGet2D(src,i,j);
    cvSet2D(dst,i+h,j+w,sTemp);
    }
    }
    }
    else
    {
    printf("cannot move!");
    dst=cvCloneImage(src);
    }
    return dst;
    }
      

  3.   

    IplImage *moveImage(IplImage *src,int h0,int w0)
    是自己定义的函数吧,有没有opencv直接可以调用的函数呢?谢谢啦!
      

  4.   

    你好,我是OPENCV新兵,看了一些资料.OPENCV图像平移,要使用矩阵.
    float m[6];
    // Matrix m looks like:
    //
    // [ m0  m1  m2 ] ===>  [ A11  A12   b1 ]
    // [ m3  m4  m5 ]       [ A21  A22   b2 ]   mm[0] = 1;
       mm[1] = 0;
    //   mm[2] = -30; //X移动量
       mm[3] = 0;
       mm[4] = 1; 
    //   mm[5] = 0;   //Y移动量矩阵还可以实现旋转,比例缩放的功能.