读书人

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

发布时间: 2013-09-06 10:17:17 作者: rapoo

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
[解决办法]
楼主试一下别的方法

读书人网 >VC/MFC

热点推荐