图像尺寸、仿射、透视变换

这篇具有很好参考价值的文章主要介绍了图像尺寸、仿射、透视变换。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、尺寸变换

1.1 图像差值原理

图像尺寸、仿射、透视变换,OpenCV学习笔记,opencv,计算机视觉,人工智能

 文章来源地址https://www.toymoban.com/news/detail-524483.html

1.2 图像缩放、翻转、拼接

1.2.1 图像缩放

图像尺寸、仿射、透视变换,OpenCV学习笔记,opencv,计算机视觉,人工智能

 1.2.2 图像翻转

图像尺寸、仿射、透视变换,OpenCV学习笔记,opencv,计算机视觉,人工智能

1.2.3 图像拼接

图像尺寸、仿射、透视变换,OpenCV学习笔记,opencv,计算机视觉,人工智能

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

using namespace std;
using namespace cv;

int main()
{
	Mat gray = imread(" lena.png",IMREAD_GRAYSCALE);
	Mat sma1lImg,bigImg0,biglmg1,bigImg2;
	resize(gray, sma1lImg,Size(15, 15), 0, 0, INTER_AREA);//先将图像缩小resize(smalllmg,bigImg0,Size(30,30),0,0,INTER_NEAREST);//最近邻差值resize(smallImg,bigImgl,Size(30,30),0,0,INTER_LINEAR);//双线性差值resize(smalllmg,bigImg2,Size(30,30),0,0,INTER_CUBIC);//双三次差值
	Mat img_x,img_y,img_xy;
	flip(gray,img_x,0);// 沿x轴对称
	flip(gray,img_y,1);//沿y轴对称
	flip(gray,img_xy, -1); //先x轴对称,再y轴对称
	Mat img00 = imread("lena00.png");
	Mat img01 = imread("lena01.png"); 
	Mat img10 = imread("lena10.png") ;
	Mat imgl1 = imread("lenal1.png" );

	//图像连接
	Mat img,img0,imgl;//图像横向连接
	hconcat(img00,img01,img0);
	hconcat(img10, imgl1, imgl);//横向连接结果再进行竖向连接
	vconcat(img0, imgl, img);

	waitKey(0);
	system("pause");
	return 0;
}

2、仿射变换

2.1 仿射变换原理

图像尺寸、仿射、透视变换,OpenCV学习笔记,opencv,计算机视觉,人工智能

 2.2 仿射变换函数

图像尺寸、仿射、透视变换,OpenCV学习笔记,opencv,计算机视觉,人工智能

 2.3 边界填充方法和对应标志

图像尺寸、仿射、透视变换,OpenCV学习笔记,opencv,计算机视觉,人工智能

 2.4 图像旋转

图像尺寸、仿射、透视变换,OpenCV学习笔记,opencv,计算机视觉,人工智能

 2.5 计算仿射变换矩阵

图像尺寸、仿射、透视变换,OpenCV学习笔记,opencv,计算机视觉,人工智能

 

//仿射变换
int affineConversion(void)
{
	Mat img = imread("F:/testMap/lena.png");
	if (img.empty())
	{
		cout << "请确认图像文件名称是否正确" << endl;
		return -1;
	}
	
	Mat rotation0, img_warp0;
	double angle = 45;//设置图像旋转的角度
	Size dst_size(img.rows, img.cols);//设置输出图像的尺寸
	Point2f center(img.rows/2.0,img.cols/2.0);//设置图像的旋转中心

	rotation0 = getRotationMatrix2D(center,angle,1);//计算仿射变换矩阵
	
	warpAffine(img,img_warp0,rotation0,dst_size);//进行仿射变换
	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);
	
	Mat rotation1,img_warpl;
	rotation1 = getAffineTransform(src_points, dst_points);//根据对应点求取仿射变换矩阵
	warpAffine(img,img_warpl,rotation1,dst_size);//进行仿射变换
	imshow("img_warpl", img_warpl);
	waitKey(0);
}

3、透视变换

3.1 原理

图像尺寸、仿射、透视变换,OpenCV学习笔记,opencv,计算机视觉,人工智能

 3.2 计算透视变化矩阵函数

 4个像素坐标,图有误

图像尺寸、仿射、透视变换,OpenCV学习笔记,opencv,计算机视觉,人工智能

3.3 计算方法标志

图像尺寸、仿射、透视变换,OpenCV学习笔记,opencv,计算机视觉,人工智能

 3.4 透视变换函数

图像尺寸、仿射、透视变换,OpenCV学习笔记,opencv,计算机视觉,人工智能

 

//透视变换
int perspectiveConversion(void)
{
	Mat img = imread("F:/testMap/二维码.png");
	if (img.empty())
	{
		cout << "请确认图像文件名称是否正确" << endl;
		return -1;
	}

	Point2f src_points[4]; 
	Point2f dst_points[4];
	
	//通过Image Watch查看的二维码四个角点坐标
	src_points[0] = Point2f(100.0,401.0);
	src_points[1] = Point2f(551.0,403.0);
	src_points[2] = Point2f(1.0,676.0);
	src_points[3] = Point2f(684.0,678.0);
	
	//期望透视变换后二维码四个角点的坐标
	dst_points[0] = Point2f(0.0,0.0);
	dst_points[1] = Point2f(627.0,0.0);
	dst_points[2] = Point2f(0.0, 627.0);
	dst_points[3] = Point2f(627.0,627.0);
	
	Mat rotation,img_warp;
	rotation = getPerspectiveTransform(src_points,dst_points);//计算透视变换矩阵
	warpPerspective(img,img_warp,rotation,img.size());//透视变换投影
	imshow("img",img);
	imshow("img_warp",img_warp);
	
	waitKey(0);
}

到了这里,关于图像尺寸、仿射、透视变换的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Python图像处理篇】opencv中的仿射变换和透视变换

    仿射变换可以将矩形图片映射为平行四边形, 透视变换可以将矩形图片映射为任意四边形。 opencv提供了两个变换函数,cv2.warpAffine和cv2.warpPerspective, 使用这两个函数可以实现所有类型的变换。 cv2.warpAffine 接收的参数2x3的变换矩阵; 而 cv2.warpPerspective 接收的3x3的变换矩阵。

    2024年01月24日
    浏览(44)
  • 我在Vscode学OpenCV 几何变换(缩放、翻转、仿射变换、透视、重映射)

    几何变换指的是将一幅图像映射到另一幅图像内的操作。 cv2.warpAffine :使用仿射变换矩阵对图像进行变换,可以实现平移、缩放和旋转等操作。 cv2.warpPerspective :使用透视变换矩阵对图像进行透视变换,可以实现镜头校正、图像纠偏等操作。 cv2.getAffineTransform :计算仿射变换

    2024年02月05日
    浏览(34)
  • 【OpenCV • c++】图像几何变换 | 图像仿射变换

    🚀 个人简介:CSDN「 博客新星 」TOP 10 , C/C++ 领域新星创作者 💟 作    者: 锡兰_CC ❣️ 📝 专    栏: 【OpenCV • c++】计算机视觉 🌈 若有帮助,还请 关注➕点赞➕收藏 ,不行的话我再努努力💪💪💪

    2024年02月16日
    浏览(25)
  • 初学opencv c++学习笔记(五)透视变换--warpPerspective()

    这篇博客将用简单的口吻谈一谈透视变换是啥以及如何操作~    但是这篇博客,只要你看了,我相信会有收获~~~~~~~ ~~~~~~~~~   ~~~~~~~~~ 目录 一、透视变换介绍 1.基础介绍: 二、透视变换apl介绍---- warpPerspective() 1.官方定义 2.参数解释 三、搭配apl介绍---- getPerspectiveTransform()

    2024年01月21日
    浏览(28)
  • OpenCV(十一):图像仿射变换

    目录 1.图像仿射变换介绍  仿射变换: 仿射变换矩阵: 仿射变换公式: 2.仿射变换函数 仿射变换函数:warpAffine() 图像旋转:getRotationMatrix2D() 计算仿射变换矩阵:getAffineTransform()  3.demo 1.图像仿射变换介绍  仿射变换:        仿射变换是由平移、缩放、旋转、翻转和错切组

    2024年02月10日
    浏览(30)
  • 【OpenCV】图像变换(缩放、平移、旋转、仿射)

    图像变换是指通过对图像进行缩放、平移、旋转、仿射、透视等变换来改变图像的形状和大小。在本篇博客中,我们将详细介绍OpenCV中的图像变换函数,并提供示例代码以帮助读者更好地理解这些函数的使用方法。 缩放变换是指通过改变图像的大小来改变图像的形状。在Op

    2024年02月07日
    浏览(36)
  • OpenCV图像的仿射变换、旋转和缩放

    以下是对代码的逐行解释:

    2024年02月13日
    浏览(26)
  • 【opencv】:图像的透视变换

    仿射变换(Affine Transformation或 Affine Map) , 又称为仿射映射, 是指在几何中, 图像进行从一个向量空间进行一次线性变换和一次平移, 变换为到另一个向量空间的过程。我们常说的仿射变换是透视变换的一个特例。 以上便是透视变换的原理图,即将源图像通过投影映射,

    2024年02月15日
    浏览(31)
  • opencv图像仿射变换,cv2.warpAffine

    目录 仿射变换原理介绍 cv2.warpAffine函数介绍 代码实例          仿射变换 ,又称 仿射映射 ,是指在几何中,一个向量空间进行一次线性变换并接上一个平移,变换为另一个向量空间。         在有限维的情况,每个仿射变换可以由一个矩阵A和一个向量b给出,它可以写

    2024年02月05日
    浏览(39)
  • OpenCV利用透视变换矫正图像

    案例:使用OpenCV将一张折射的图片给矫正过来 实现步骤: 1.载入图像 2.图像灰度化 3.二值分割 4.形态学操作去除噪点 5.轮廓发现 6.使用霍夫直线检测,检测上下左右四条直线(有可能是多条,但是无所谓) 7.绘制出直线 8.寻找与定位上下左右是条直线 9.拟合四条直线方程 1

    2024年02月06日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包