相关版本: OpenCV 2.1

#include "cv.h"#include "highgui.h"#include "math.h"

// clockwise 为true则顺时针旋转,否则为逆时针旋转IplImage* rotateImage(IplImage* src, int angle, bool clockwise){    angle = abs(angle) % 180;if (angle > 90)    {        angle = 90 - (angle % 90);    }    IplImage* dst = NULL;int width =            (double)(src->height * sin(angle * CV_PI / 180.0)) +            (double)(src->width * cos(angle * CV_PI / 180.0 )) + 1;int height =            (double)(src->height * cos(angle * CV_PI / 180.0)) +            (double)(src->width * sin(angle * CV_PI / 180.0 )) + 1;int tempLength = sqrt(src->width * src->width + src->height * src->height) + 10;int tempX = (tempLength + 1) / 2 - src->width / 2;int tempY = (tempLength + 1) / 2 - src->height / 2;int flag = -1;

    dst = cvCreateImage(cvSize(width, height), src->depth, src->nChannels);    cvZero(dst);    IplImage* temp = cvCreateImage(cvSize(tempLength, tempLength), src->depth, src->nChannels);    cvZero(temp);

    cvSetImageROI(temp, cvRect(tempX, tempY, src->width, src->height));    cvCopy(src, temp, NULL);    cvResetImageROI(temp);

if (clockwise)        flag = 1;

float m[6];int w = temp->width;int h = temp->height;    m[0] = (float) cos(flag * angle * CV_PI / 180.);    m[1] = (float) sin(flag * angle * CV_PI / 180.);    m[3] = -m[1];    m[4] = m[0];// 将旋转中心移至图像中间    m[2] = w * 0.5f;    m[5] = h * 0.5f;//    CvMat M = cvMat(2, 3, CV_32F, m);    cvGetQuadrangleSubPix(temp, dst, &M);    cvReleaseImage(&temp);return dst;}

int main(int argc, char **argv){    IplImage *src = 0;    IplImage *dst = 0;

int angle = 75;

    src = cvLoadImage("test.jpg");

    dst = rotateImage(src, angle, false);    cvNamedWindow("dst", 1);    cvShowImage("dst", dst);    cvWaitKey(0);

    cvReleaseImage(&src);    cvReleaseImage(&dst);return 0;}

  基本是通过改写OpenCV的官方论坛来实现的,除了那个用于旋转的m矩阵不知何用。

  基本思路是把图片通过设置ROI复制到一个更大的黑色背景的图片中去,然后再旋转之后在截取其中的最小的包含旋转过后的矩形

OpenCV下的图片旋转(转)相关推荐

  1. IE下及标准浏览器下的图片旋转(二)—— Canvas(1)

    文章过长,一篇无法保存. IE下及标准浏览器下的图片旋转(一)--滤镜,CSS3 3. canvas canvas 是html5中的新标签,使用canvas之前我们先看下它的定义:<canvas ...

  2. IE下及标准浏览器下的图片旋转(二)—— Canvas(2)

    文章过长,一篇无法保存 IE下及标准浏览器下的图片旋转(二)-- Canvas(1) 同样,作为最后,我们使用使用jquery也为canvas写个旋转demo: javascript: $(funct ...

  3. 贾志刚-OpenCV下的图片读取,摄像头调用

    贾志刚-OpenCV下的图片读取,摄像头调用 运行环境:Window10 + Python3.6 + PyCharm OpenCV3 import cv2 as cv import numpy as ...

  4. linux下BMP图片旋转

    linux下BMP图片旋转   MP是英文Bitmap(位图)的简写,它是Windows操作系统中的标准图像文件格式,能够被多种Windows应用程序所支持.随着Windows操作系统的流行与丰富的W ...

  5. ie浏览器下的图片旋转问题

    今天做了一个项目,需要将图片旋转180度,可是使用ie自带过滤属性完全没效果. filter: progid:DXImageTransform.Microsoft.BasicImage(rotatio ...

  6. Python OpenCV 实现对图片旋转矩形的裁剪

    前言: 最近需要实现一个在一张大图上给定一个带方向的点,以这个点为中心,以方向为角度裁剪出一个矩形区域.在网上查到很多方法都是先对大图像进行旋转,再从中切片取出目标区域.不失为一个好办法,但是我要处理 ...

  7. OpenCV 图片旋转

    OpenCV 图片旋转的两个函数 cv2.getRotationMatrix2D 获得仿射变化矩阵 cv2.warpAffine 进行仿射变化 getRotationMatrix2D 获得仿射变化矩阵 ...

  8. python图片旋转脚本_Python+OpenCV 实现图片无损旋转90°且无黑边

    0. 引言 有如上一张图片,在以往的图像旋转处理中,往往得到如图所示的图片. 然而,在进行一些其他图像处理或者图像展示时,黑边带来了一些不便.本文解决图片旋转后出现黑边的问题,实现了图片尺寸不变的旋转 ...

  9. Opencv——批量处理同一文件夹下的图片(解决savedfilename = dest + filenames[i].substr(len)问题)

    文章目录 前言 一.完整代码 二.实现效果 前言 第一份代码实现了批量修改同一文件夹下图片的尺寸,有其他需求时仅需修改处理部分的代码以及文件夹路径. 第二份代码实现了批量截取同一文件夹下每张图片的RO ...

  10. c++中opencv对图片旋转镜像并调整尺寸显示

    直接上代码, 如代码注释所示,使用cv库 1.使用imread函数读取输入图片 2.使用resize函数对图片缩放显示 3.使用flip函数对图片镜像 4.使用Rotate函数对图片旋转 5.使用im ...

最新文章

  1. 国内首部高尔夫商战小说《手腕》(林健锋著)
  2. java springboot 搭建_springboot搭建java项目
  3. fifo的rdata_同步FIFO设计
  4. 【Tika基础教程之一】Tika基础教程
  5. 查询在具有最小内存容量的所有PC中具有最快处理器的PC制造商 (20 分)(两种思路+详解)
  6. 天地图专题五:在天地图上绘制电子区域并保存数据
  7. linux下echo与time服务的程序实现
  8. CV Code|计算机视觉开源周报20200503期
  9. Mongodb 与 MySQL对比
  10. 完整简单的红黑树算法
  11. 红帽RHCE培训-课程3笔记内容2
  12. oracle 弱口令扫描器,批量扫描弱口令检查工具
  13. EI/scopus推荐-智能交通与智慧城市会议
  14. matlab中plot函数的常用颜色和线型
  15. C#邮件过滤系统(论文+可执行程序+源码+外文翻译+程序操作演示录像)
  16. 学校食堂工作流程图流程图模板分享
  17. 【C++面试必备】一个专栏带你搞定剑指offer第二版
  18. 如何对大数据进行分析和处理?_光点科技
  19. 大话成像之《图像质量测试测量与国际标准》课程
  20. 使用idea搭建springboot项目教程

热门文章

  1. python使用长ping命令_在Python中调用Ping命令,批量IP的方法
  2. CentOS安装Nvidia驱动和CUDA
  3. debian:必须有官方源,难道国内镜像都是僵尸源?
  4. libjvm ThreadState Transition transition_from_native
  5. 管理感悟:要想到自己脖子后面有灰
  6. WEB前端、后端的说明
  7. python读取excel数据生成word_利用Python将excel数据读取到word表格
  8. android设计个人简历页面_制作个人简历网站教程
  9. qt 使用msvc编译器出现中文乱码的问题
  10. public class c中_C++中如何使用类模板