怎样用opencv实现图像的任意角度的旋转,该如何处理
怎样用opencv实现图像的任意角度的旋转
找了好久都没找到,网上有些图像旋转后图像都变形了....谢谢大家了
------解决方案--------------------
通过旋转矩阵啊
http://www.cnblogs.com/HappyXie/archive/2011/03/02/1969434.html
------解决方案--------------------
这是一段实现图像旋转的程序
你可以参考一下
找了好久都没找到,网上有些图像旋转后图像都变形了....谢谢大家了
------解决方案--------------------
通过旋转矩阵啊
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);