opencv学习日记——对小姐姐进行旋转和仿射变换

opencv学习日记——对小姐姐进行旋转和仿射变换

1,中心点➕角度 进行图形旋转与仿射
2, 三点法 进行图形旋转与仿射

#include<iostream>
#include<opencv2/opencv.hpp>

using namespace std;
using namespace cv;

int main()
{
    //读图
    Mat img1 = imread("sister.jpg");
    //转换尺寸,小姐姐有点太大
    Mat img;
    resize(img1, img, Size(670, 471));
    //测试读取成功了吗
    if (img.empty())
    {
        cout << "读取图片失败";
        return -1;
    }
    Mat img_warp0, img_warp1, rotation0, rotation1;
    //中心点➕角度 进行图形旋转与仿射
    //尺寸
    Size dst_size11(img.rows, img.cols);
    //中心点
    Point2f center(img.rows/2, img.cols/2);
    double angle = 10;
    //旋转矩阵 = ***(中心点, 角度, 尺度)
    rotation0 = getRotationMatrix2D(center, angle, 1);
    // 原图 新图 旋转矩阵 新图尺寸
    warpAffine(img, img_warp0, rotation0, dst_size11);
    //出图
    imshow("img_warp0", img_warp0);

    //三点法 进行图形旋转与仿射
    Point2f src_points[3];
    Point2f dst_points[3];
    //定义三个点坐标
    src_points[0] = Point2f(0, 0);
    src_points[1] = Point2f(0, (float)(img.cols - 1));
    src_points[2] = Point2f((float)(img.rows - 1), (float)(img.cols - 1));
    //转化后三个点坐标
    dst_points[0] = Point2f((float)(img.rows) * 0.11, (float)(img.cols) * 0.20);
    dst_points[1] = Point2f((float)(img.rows) * 0.15, (float)(img.cols) * 0.70);
    dst_points[2] = Point2f((float)(img.rows) * 0.81, (float)(img.cols) * 0.85);
    //得到旋转矩阵
    rotation1 = getAffineTransform(src_points, dst_points);
    // 原图 新图 旋转矩阵 新图尺寸
    warpAffine(img, img_warp1, rotation1, dst_size11);
    //出图
    imshow("img_warp1", img_warp1);
    //等待
    waitKey(0);
    return 0;
}

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值