一杯清酒邀明月
天下本无事,庸人扰之而烦耳。
posts - 3121,comments - 209,views - 578万

 

复制代码
 1 #include "opencv2/highgui/highgui.hpp"
 2 #include "opencv2/imgproc/imgproc.hpp"
 3 #include <iostream>
 4 #include <stdio.h>
 5 
 6 using namespace cv;
 7 using namespace std;
 8 
 9 /// 全局变量
10 char* source_window = "Source image";
11 char* warp_window = "Warp";
12 char* warp_rotate_window = "Warp + Rotate";
13 
14 /** @function main */
15  int main( int argc, char** argv )
16  {
17    Point2f srcTri[3];
18    Point2f dstTri[3];
19 
20    Mat rot_mat( 2, 3, CV_32FC1 );
21    Mat warp_mat( 2, 3, CV_32FC1 );
22    Mat src, warp_dst, warp_rotate_dst;
23 
24    /// 加载源图像
25    src = imread( argv[1], 1 );
26 
27    /// 设置目标图像的大小和类型与源图像一致
28    warp_dst = Mat::zeros( src.rows, src.cols, src.type() );
29 
30    /// 设置源图像和目标图像上的三组点以计算仿射变换
31    srcTri[0] = Point2f( 0,0 );
32    srcTri[1] = Point2f( src.cols - 1, 0 );
33    srcTri[2] = Point2f( 0, src.rows - 1 );
34 
35    dstTri[0] = Point2f( src.cols*0.0, src.rows*0.33 );
36    dstTri[1] = Point2f( src.cols*0.85, src.rows*0.25 );
37    dstTri[2] = Point2f( src.cols*0.15, src.rows*0.7 );
38 
39    /// 求得仿射变换
40    warp_mat = getAffineTransform( srcTri, dstTri );
41 
42    /// 对源图像应用上面求得的仿射变换
43    warpAffine( src, warp_dst, warp_mat, warp_dst.size() );
44 
45    /** 对图像扭曲后再旋转 */
46 
47    /// 计算绕图像中点顺时针旋转50度缩放因子为0.6的旋转矩阵
48    Point center = Point( warp_dst.cols/2, warp_dst.rows/2 );
49    double angle = -50.0;
50    double scale = 0.6;
51 
52    /// 通过上面的旋转细节信息求得旋转矩阵
53    rot_mat = getRotationMatrix2D( center, angle, scale );
54 
55    /// 旋转已扭曲图像
56    warpAffine( warp_dst, warp_rotate_dst, rot_mat, warp_dst.size() );
57 
58    /// 显示结果
59    namedWindow( source_window, CV_WINDOW_AUTOSIZE );
60    imshow( source_window, src );
61 
62    namedWindow( warp_window, CV_WINDOW_AUTOSIZE );
63    imshow( warp_window, warp_dst );
64 
65    namedWindow( warp_rotate_window, CV_WINDOW_AUTOSIZE );
66    imshow( warp_rotate_window, warp_rotate_dst );
67 
68    /// 等待用户按任意按键退出程序
69    waitKey(0);
70 
71    return 0;
72   }
复制代码
posted on   一杯清酒邀明月  阅读(203)  评论(0编辑  收藏  举报
编辑推荐:
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
阅读排行:
· 全网最简单!3分钟用满血DeepSeek R1开发一款AI智能客服,零代码轻松接入微信、公众号、小程
· .NET 10 首个预览版发布,跨平台开发与性能全面提升
· 《HelloGitHub》第 107 期
· 全程使用 AI 从 0 到 1 写了个小工具
· 从文本到图像:SSE 如何助力 AI 内容实时呈现?(Typescript篇)
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示