opencv——(动态)旋转图像
2024-09-29 02:33:33
#include "stdafx.h"
#include <opencv2\opencv.hpp>
#include <opencv\cv.h>
#include <iostream>
#include<string>
#include <windows.h>
using namespace std;
using namespace cv; int _tmain(int argc, _TCHAR* argv[])
{ IplImage *src = cvLoadImage("lena.jpg");
IplImage *dst = ; /* the first command line parameter must be image file name */
if (src != )
{
int delta = ;
int angle = ;
int opt =; // 1: 旋转加缩放
// 0: 仅仅旋转
double factor; dst = cvCloneImage (src);
cvNamedWindow ("src", );
cvShowImage ("src", src); for (;;)
{
float m[];
// Matrix m looks like:
//
// [ m0 m1 m2 ] ===> [ A11 A12 b1 ]
// [ m3 m4 m5 ] [ A21 A22 b2 ]
//
CvMat M = cvMat (, , CV_32F, m);
int w = src->width;
int h = src->height;
if (opt) // 旋转加缩放
factor = (cos (angle * CV_PI / .) + 1.0) * ;
else // 仅仅旋转
factor = ;
m[] = (float) (factor * cos (-angle * * CV_PI / .));
m[] = (float) (factor * sin (-angle * * CV_PI / .));
m[] = -m[];
m[] = m[];
// 将旋转中心移至图像中间
m[] = w * 0.5f;
m[] = h * 0.5f;
// dst(x,y) = A * src(x,y) + b
cvZero (dst);
cvGetQuadrangleSubPix (src, dst, &M);
cvNamedWindow ("dst", );
cvShowImage ("dst", dst);
if (cvWaitKey () == ) //ESC
break;
angle = (int) (angle + delta) % ;
} // for-loop
}
return ; }
最新文章
- 一则JVM memory leak解决的过程
- 记录一下跟Python有关的几个拓展名
- ASP.NET 设计模式(转)
- jQuery慢慢啃之ajax(九)
- groovy学习(五) 命令行输入输出
- UNIX网络编程——TCP 滑动窗口协议
- 【js】项目中有关时间的问题
- day46 前端基础HTML5+CSS3
- 二、Laravel手动下载安装及初始化配置(此处以Laravel5.2为例)
- Missing artifact com.oracle:ojdbc6:jar:11.2.0.3 Maven中不能引入ojdbc解决方法,错误
- java 各种数据类型判断为空
- IE内核浏览器的404页面问题和IE自动缓存引发的问题
- SSE图像算法优化系列二十八:深度优化局部拉普拉斯金字塔滤波器。
- mybatis3 前台传数组 的处理
- vs 2015 编译cocos2d-x-3.9
- Oracle 初始化参数 二三事,随记
- MySQL重装失败,could not start the service MySQL.Error:0
- 智能指针shared_ptr新特性shared_from_this及weak_ptr
- 【原创】MySQL Replay线上流量压测工具
- Buffer Pool--数据库内存结构