首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

opencv 图像旋转 地界值填充or白色填充

2013-09-06 
opencv 图像旋转 边界值填充or白色填充网上找到的opencv图像旋转的程序,发现他声称:在新缓冲区中与原图没

opencv 图像旋转 边界值填充or白色填充
网上找到的opencv图像旋转的程序,发现他声称:在新缓冲区中与原图没有对应的象素点的值用白色代替。
运行出来的结果却是以边界值填充。

#include "cv.h"
#include "highgui.h"
#include "math.h"
#include<stdio.h>
int main( int argc, char** argv )
{
 IplImage* src;
 /* the first command line parameter must be image file name */
 if( (src = cvLoadImage("Demo.jpg", -1)))
 {
  printf("sdfs");
  IplImage* dst = cvCloneImage( src );
  int  delta = 1;
  int  angle = 40;
        int opt = 0;   // 1: 旋转加缩放
                       // 0:  仅仅旋转
        double factor;
        cvNamedWindow( "src", 1 );
  cvShowImage( "src", src );
  for(;;)
  {
   float m[6];
            // Matrix m looks like:
            //
            // [ m0  m1  m2 ] ===>  [ A11  A12   b1 ]
            // [ m3  m4  m5 ]       [ A21  A22   b2 ]
            // 
   CvMat M = cvMat( 2, 3, CV_32F, m );
   int w = src->width;
   int h = src->height;
   if(opt) // 旋转加缩放
                factor = (cos(angle*CV_PI/180.) + 1.05)*2;
            else //  仅仅旋转
                factor = 1;
   m[0] = (float)(factor*cos(-angle*2*CV_PI/180.));
   m[1] = (float)(factor*sin(-angle*2*CV_PI/180.));
   m[3] = -m[1];
   m[4] = m[0];
   // 将旋转中心移至图像中间


            m[2] = w*0.5f;  
   m[5] = h*0.5f;  
            //  dst(x,y) = A * src(x,y) + b
   cvGetQuadrangleSubPix( src, dst, &M);
   cvNamedWindow( "dst", 1 );
   cvShowImage( "dst", dst );
   if( cvWaitKey(85) == 27 )
    break;
   angle =(int) (angle /*+ delta*/) % 360;
  } // for-loop
 }
cvReleaseImage( &src );
cvReleaseImage( &dst );
 return 0;
}



opencv 图像旋转 地界值填充or白色填充
现在我想实现白色填充,怎么做? OpenCV 旋转
[解决办法]
http://blog.csdn.net/fengbingchun/article/details/6021622
[解决办法]
楼主试一下别的方法

热点排行