读书人

怎样用opencv实现图像的任意角度的旋转

发布时间: 2012-06-14 16:00:31 作者: rapoo

怎样用opencv实现图像的任意角度的旋转
找了好久都没找到,网上有些图像旋转后图像都变形了....谢谢大家了

[解决办法]
通过旋转矩阵啊
http://www.cnblogs.com/HappyXie/archive/2011/03/02/1969434.html
[解决办法]
这是一段实现图像旋转的程序
你可以参考一下

C/C++ code
    CvPoint2D32f    ptfCcenter;    CvScalar        scValue;    CvSize            sizeNew;    float            fElement[6];    int                nAngle        = 30;    float            fAngleR        = nAngle*CV_PI/180;    COLORREF        clrBack    = GetSysColor(COLOR_BTNFACE);    sizeNew.width    = fabs((sin(fAngleR)*m_pImg->height))+fabs((cos(fAngleR)*m_pImg->width));    sizeNew.height    = fabs((sin(fAngleR)*m_pImg->width))+fabs((cos(fAngleR)*m_pImg->height));    IplImage*    pImgRotate    = cvCreateImage(sizeNew, m_pImg->depth, m_pImg->nChannels);    CvMat        matRotate    = cvMat(2, 3, CV_32F, fElement);    ptfCcenter.x    = (m_pImg->width-1)*0.5;    ptfCcenter.y    = (m_pImg->height-1)*0.5;    cv2DRotationMatrix(ptfCcenter, nAngle, 1, &matRotate);    fElement[2] += (pImgRotate->width-m_pImg->width)/2;    fElement[5] += (pImgRotate->height-m_pImg->height)/2;    scValue.val[0]    = GetRValue(clrBack);    scValue.val[1]    = GetRValue(clrBack);    scValue.val[2]    = GetRValue(clrBack);    scValue.val[3]    = 0;    cvZero(pImgRotate);    cvWarpAffine(m_pImg, pImgRotate, &matRotate, CV_INTER_LINEAR+CV_WARP_FILL_OUTLIERS, scValue);    cvReleaseImage(&m_pImg); 

读书人网 >VC/MFC

热点推荐