OpenCV图像处理技术(Python)——几何变换
发布日期:2021-06-29 04:43:47 浏览次数:4 分类:技术文章

本文共 1806 字,大约阅读时间需要 6 分钟。

©FuXianjun

几何变换是将一幅图像映射到另外一幅图像内的操作。


一、缩放

1.cv2.resize() 实现对图像的缩放,该函数的具体形式为:

dst = cv2.resize( src, dsize[, fx[, fy[, interpolation]]] )dst代表输出的目标图像,该图像的类型与src相同,其大小为dsize,或者可以通过src.size().fx.fy 计算得到src代表需要缩放的原图dsize 代表输出图像的大小fx代表水平方向的缩放比例fy代表垂直方向的缩放比例interpolation代表差值方式

差值方式如下:

INTER_NEAREST - 最邻近插值
INTER_LINEAR - 双线性插值,如果最后一个参数你不指定,默认使用这种方法
INTER_AREA -区域插值 根据当前像素点周边区域的像素实现当前像素点的采样
INTER_CUBIC - 三次样条差值
INTER_LANCZOS4 - 8x8像素邻域内的Lanczos插值
WARP_FILL_OUTLIERS-标志,填补目标图像中的所有像素

我们来使用函数cv2.resize()对一个数组进行简单缩放

import cv2 import numpy as npimg = np.ones([2,4,3],dtype=np.uint8)size = img.shape[:2]rst=cv2.resize(img,size)print("img.shape=\n",img.shape)print("img=\n",img)print("rst.shape=\n",rst.shape)print("rst=\n",rst)

结果如下:

在这里插入图片描述

二、将图像进行几何变换,缩放、翻转、平移、旋转操作。

完整代码如下:

#导入库import cv2 import numpy as np#读取图像lena = cv2.imread("lena.jpg")row, col, channel = lena.shape#转换成灰色图像rst=cv2.cvtColor(lena,cv2.COLOR_BGR2GRAY)#缩放图像dst=cv2.resize(lena,None,fx=0.5,fy=0.5)#翻转图像fz_x=cv2.flip(lena,0)fz_y=cv2.flip(lena,1)fz_xy=cv2.flip(lena,-1)#平移图像x=100y=200M=np.float32([[1,0,x],[0,1,y]])move=cv2.warpAffine(lena,M,(row,col))#旋转图像M=cv2.getRotationMatrix2D((row/2,col/2),45,0.6)rotate=cv2.warpAffine(lena,M,(row,col))#显示图像cv2.imshow("rst",rst)cv2.imshow("dst",dst)cv2.imshow("fz_x",fz_x)cv2.imshow("fz_y",fz_y)cv2.imshow("fz_xy",fz_xy)cv2.imshow("original",lena)cv2.imshow("move",move)cv2.imshow("rotation",rotate)cv2.waitKey()cv2.destroyAllWindows()

运行结果如下:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

三、将图像通过透视变换进行矫正

import cv2import numpy as np img=cv2.imread('hello.png')rows,cols,_=img.shapepts_o=np.float32([[46,177],[224,81],[80,282],[272,185]])pts_d=np.float32([[0,0],[600,0],[0,600],[600,600]])M=cv2.getPerspectiveTransform(pts_o,pts_d)dst=cv2.warpPerspective(img,M,(600,600))cv2.imshow("img",img)cv2.imshow('dst',dst)cv2.waitKey(0)cv2.destroyAllWindows()

运行结果如下:

在这里插入图片描述

转载地址:https://blog.csdn.net/zhanghao139/article/details/117596543 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:OpenCV图像处理技术(Python)——凸包
下一篇:OpenCV图像处理技术(Python)——图像处理基本操作

发表评论

最新留言

初次前来,多多关照!
[***.217.46.12]2024年04月14日 22时29分42秒