OpenCV2 图像旋转偏移问题
2016-07-08 17:56
435 查看
问题:
问题描述:略。。。直接上图:原图:
左旋 90°:
【note】
在正方形图像中没有问题,所以,图片的偏移是由 原图 和 目标图 之间的 中心点(center) 位移所产生的。
解决方案:
方案一:
废话不多说,直接上程序:当时脑残了,没想到 at 方法,所以。。。仅供参考!
//cv::Mat imgProc 源图像; void MainWindow:: imgShowRotate90(float degree) { cv::Point2f imgCenter;//中心点; imgCenter.x=imgProc.size().width/2; imgCenter.y=imgProc.size().height/2; cv::Size destSize;//程序中只有旋转90度选项,所以直接对调长宽; destSize.height = imgProc.size().width; destSize.width = imgProc.size().height; double rot[6]; CvMat rotMat =cvMat(2,3,CV_64FC1,rot); //旋转矩阵; cv2DRotationMatrix(imgCenter,degree,1.0,&rotMat); //图像偏差校正; rot[2]+=(float)(destSize.width - imgProc.size().width)/2; rot[5] +=(float) (destSize.height - imgProc.size().height)/2; cv::Mat rotMatM(&rotMat,1); //旋转; cv::warpAffine(imgProc,imgProc,rotMatM,destSize); }
由于在
cv::Mat中的操作指针都是
uchar *的,移动范围超过 256 就会溢出,所以借用
cvMat实现旋转矩阵的操作。
最后将
cvMat转换为
cv::Mat用于
cv::warpAffine()。
方案二
代码:对于旋转矩阵不太清楚的童鞋,建议去看一下欧拉旋转、方向余弦矩阵、四元数,乃至于李代数(阴险脸)。
cv::Point2f imgCenter; imgCenter.x=imgProc.size().width/2; imgCenter.y=imgProc.size().height/2; cv::Size destSize; destSize.height = imgProc.size().width; destSize.width = imgProc.size().height; cv::Mat rotMat(2,3,CV_64F); rotMat = cv::getRotationMatrix2D(imgCenter,degree,1.0); //图像偏差校正; rotMat.at<double>(2) +=(float)(destSize.width - imgProc.size().width)/2; rotMat.at<double>(5) +=(float) (destSize.height - imgProc.size().height)/2; cv::warpAffine(imgProc,imgProc,rotMat,destSize);
最后,放上效果图:
不错,就是我打的码,lena 大法好!
相关文章推荐
- python中使用OpenCV进行人脸检测的例子
- opencv 做人脸识别 opencv 人脸匹配分析
- 使用opencv拉伸图像扩大分辨率示例
- Android Studio中配置OpenCV库开发环境的教程
- 基于C++实现kinect+opencv 获取深度及彩色数据
- visual studio 2012安装配置方法图文教程 附opencv配置教程
- OpenCV 2.4.3 C++ 平滑处理分析
- Python中使用OpenCV库来进行简单的气象学遥感影像计算
- 利用Python和OpenCV库将URL转换为OpenCV格式的方法
- python结合opencv实现人脸检测与跟踪
- Python环境搭建之OpenCV的步骤方法
- Python+Opencv识别两张相似图片
- Python实现OpenCV的安装与使用示例
- 在树莓派2或树莓派B+上安装Python和OpenCV的教程
- opencv-python学习一--人脸检测
- 在Ubuntu上安装OpenCV3.0和Python-openCV的经历
- 使用 Java 开发 OpenCV 应用
- OpenCV配置,从来没有这么简单!
- ubuntu下opencv和qt的安装配置
- visual studio 2012安装配置方法图文教程 附opencv配置教程