利用opencv的仿射变换函数warpaffine()实现图像的亚像素级平移(代码片段)

昊虹AI笔记 昊虹AI笔记     2022-12-30     409

关键词:

利用OpenCV的仿射变换函数warpAffine()实现图像的亚像素级平移

通常的图像平移,移动的都是整数个单位,比如向右移动8个像素。
亚像素级平移,则图像的平移量可以为带小数的量,比如向右移动8.5个像素。

利用OpenCV的仿射变换函数warpAffine(),可以轻松实现图像的亚像素平移。
关于OpenCV的仿射变换函数warpAffine()的详细介绍,大家可以参考博文 https://www.hhai.cc/thread-190-1-1.html

C++代码如下:
代码中用到的图像下载链接如下:
https://pan.baidu.com/s/1f4BklPKvr4dJvmjnZYAtig?pwd=l6uv

//出处:昊虹AI笔记网(hhai.cc)
//用心记录计算机视觉和AI技术

//OpenCV版本 OpenCV3.0

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

using namespace std;
using namespace cv;

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

using namespace std;
using namespace cv;

int main()

	Mat src = imread("F:/material/images/2022/2022-12/1001000-contour.png");
	Mat dst;

	// 定义平移仿射变换矩阵,该仿射变换矩阵可实现图像向右移动8.5个像素单位。
	Mat trans_mat = (Mat_<double>(2, 3) << 1, 0, 8.5, 0, 1, 0.0);

	// 平移图像
	warpAffine(src, dst, trans_mat, src.size(), 1, 0, Scalar(255, 255, 255));

	imshow("src", src);
	imshow("dst", dst);

	waitKey(0);
	return 0;

运行结果如下图所示:

仿射变换

http://www.opencv.org.cn/opencvdoc/2.3.2/html/doc/tutorials/imgproc/imgtrans/warp_affine/warp_affine.html目标在这个教程中你将学习到如何:使用OpenCV函数 warpAffine 来实现一些简单的重映射.使用OpenCV函数 getRotationMatrix2D 查看详情

opencv图像平移缩放旋转翻转图像仿射变换(代码片段)

...是x和y方向上平移的距离:图像平移利用仿射变换函数cv.warpAffine()实现实验#图像平移importnumpyasnpimportcv2ascvimg=cv.imread(‘paojie.jpg‘)rows,cols=img.shape[:2]#定义平移矩阵,需要是numpy的float32类型#x轴平移100,y轴平移50M=np.float32([[1,0,100],[0... 查看详情

opencv中的cv2.warpaffine()

作用实现对图片的仿射变换参数importcv2cv2.warpAffine(input,M,dsize[,dst[,flags[,borderMode[,borderValue]]]])input:输入图像M:仿射变换矩阵,反应仿射变换关系,一般为平移或旋转dsize:输出图像的大小flags:插值方法(int类型),默认为flags=cv2.INTER_LINEA... 查看详情

opencv图像处理

...p;01ty通过numpy来产生这个矩阵,并将其赋值给仿射函数cv2.warpAffine(). 仿射函数cv2.warpAffine()接受三个参数,需要变换的原始图像,移动矩阵M以及变换的图像大小(这个大小如 查看详情

图像缩放示例

...属于仿射变换或者透视变换的范畴,一般可以通过OpenCV的warpAffine()或者warpPerspective()函数实现。出于兴趣,根据仿射变换公式自己简单写了一个函数实现图像的缩放,缩放中心设置为图像中心。代码如下:1#include<iostream>2#incl... 查看详情

opencv——getrotationmatrix2dwarpaffine仿射变换

...CV中实现仿射变换,一般涉及到 getRotationMatrix2D和 warpAffine 这两个函数:计算二维旋转变换矩阵:getRotationMatrix2D函数   getRotationMatrix2D函数用于计算二维旋转变换矩阵。变换会将旋转中心映射到输出图像的原... 查看详情

图像的仿射变换:cv2.warpaffine()(代码片段)

概述图像的几何变换主要包括:平移、旋转、缩放、剪切、仿射、透视等。图像的几何变换主要分为:刚性变换、相似变换、仿射变换和透视变换(投影变换)刚性变换:平移+旋转相似变换:缩放+... 查看详情

如何在 OpenCV C++ 中使用 warpAffine 函数

】如何在OpenCVC++中使用warpAffine函数【英文标题】:HowtousewarpAffinefunctioninOpenCVC++【发布时间】:2017-06-0614:48:28【问题描述】:我需要使用仿射变换来扭曲图像。我得到的错误是“代码已崩溃”。谁能告诉我我的代码有什么问题?M... 查看详情

opencv实现图像的几何变换

...和图像裁剪等。执行这些几何变换的两个关键函数是cv2.warpAffine()和cv2.warpPerspective()。cv2.warpAffine()函数使用以下2x3变换矩阵来变换源图像:cv2.warpPerspective()函数使用以下3x3变换矩阵变换源图像:接下来,我们将了解最常见的几何... 查看详情

生成组合仿射变换矩阵,裁剪+缩放+平移+斜切+旋转(代码片段)

...是用OpenCV来实现就是生成一个放射变换矩阵再调用OpenCV的warpAffine函数,传入变换矩阵和图片得到变换后的输出,这里的难点在于如何生成这个仿射 查看详情

opencv图像变换原理详解图像平移图像旋转图像缩放(代码片段)

...阵M=cv.getAffineTransform(pts1,pts2)#第三个参数为dst的大小dst=cv.warpAffine(img,M,(cols,rows))plt.subplot(121),plt.ims 查看详情

opencv图片旋转截断问题解决方法(代码片段)

...用“getRotationMatrix2D”获得仿射变换矩阵,然后调用“warpAffine”对图片进行变换。其中“warpAffine”有一个参数可以用来控制变换后的图片大小,但变换后的图片大小如何获 查看详情

opencv中的仿射变换

什么是仿射变换?原理:1、一个任意的仿射变换都能表示为乘以一个矩阵(线性变换)接着再加上一个向量(平移)2、综上所述,我们能够用仿射变换来表示:  1)旋转(线性变换)  2)平移(向量加)  3)缩放操作... 查看详情

opencv实现仿射变换

...表的是两幅图之间的 关系 .   #include"opencv2/highgui/h 查看详情

opencv图像变换(仿射变换与透视变换)

仿射变换(affinetransform)与透视变换(perspectivetransform)在图像还原、图像局部变化处理方面有重要意义。通常,在2D平面中,仿射变换的应用较多,而在3D平面中,透视变换又有了自己的一席之地。两种变换原理相似,结果也类似,... 查看详情

opencv完整例程25.图像的平移(代码片段)

...偏移量(Tx,Ty)按上式构造平移变换矩阵MAT,由函数cv2.warpAffine可以计算变换后的平移图像。函数说明:cv2.warpAffine(src,M,dsize[,dst[,flags[,borderMode[,borderValue]]]])→dst函数cv2.warpAffine()通过变换矩阵M对图像src进行仿射 查看详情

图像处理之_仿射变换与透视变换

...ffine(src,dst,mat)实现,其中mat是2x3的仿射矩阵,该矩阵可以利用函数cvGetAffineTransform(srcTri, 查看详情

opencv探索之路:重映射与仿射变换

...就说,像素点在另一个图像中的位置是由f来计算的。在OpenCV中,用的是remap函数实现重映射。基本重映射#include<iostream>#include<opencv2opencv.hpp>#include<opencv2imgpr 查看详情