OpenCV图像的几何变换处理方法详解
一、图像缩放
1.API
cv2.resize(src, dsize, fx=0,fy=0,interpolation = cv2.INTER_LINEAR)
参数:
①src :输入图像
②dsize:绝对尺寸
③fx,fy:相对尺寸
④interpolation:插值方法
2.代码演示
import cv2 as cv
import numpy as np
import matplotlib.pyplot as plt
img = cv.imread('Genshin.jpeg', -1)
cv.imshow('image', img)
[rows, cols] = img.shape[:2]
res_1 = cv.resize(img, (2*cols, 2*rows), interpolation=cv.INTER_CUBIC)
cv.imshow('image', res_1)
cv.waitKey()
res_2 = cv.resize(img, None, fx=0.5, fy=0.5)
cv.imshow('image', res_1)
cv.waitKey()二、图像平移
1.API
cv2.warpAffine(img, M, dsize)
参数:
①img:输入图像
②M:2×3移动矩阵,为np.float32类型
③dsize:输出图像的大小
2.代码演示
import cv2 as cv
import numpy as np
import matplotlib.pyplot as plt
img = cv.imread('Genshin.jpeg', -1)
cv.imshow('image', img)
[rows, cols] = img.shape[:2]
M = np.float32([[1, 0, 100], [0, 1, 50]])
dst = cv.warpAffine(img, M, (cols, rows))
cv.imshow('image', dst)
cv.waitKey()
三、图像旋转
1.API
cv2.getRotationMatrix2D(center, angle, scale) cv.warpAffine()
参数:
①center:旋转中心
②angle:旋转角度
③scale:缩放比例
返回值:
M:旋转矩阵
2.代码演示
import cv2 as cv
import numpy as np
import matplotlib.pyplot as plt
img = cv.imread('Genshin.jpeg', -1)
cv.imshow('image', img)
[rows, cols] = img.shape[:2]
M = cv.getRotationMatrix2D((cols/2, rows/2), 120, 1)
dst = cv.warpAffine(img, M, (cols, rows))
cv.imshow('image', dst)
cv.waitKey()

四、仿射变换
1.API
cv2.getAffineTransform() cv2.warpAffine()
2.代码演示
import cv2 as cv
import numpy as np
import matplotlib.pyplot as plt
img = cv.imread('Genshin.jpeg', -1)
cv.imshow('image', img)
[rows, cols] = img.shape[:2]
pts1 = np.float32([[50, 50], [200, 50], [50, 200]])
pts2 = np.float32([[100, 100], [200, 50], [100, 250]])
M = cv.getAffineTransform(pts1, pts2)
dst = cv.warpAffine(img, M, (cols, rows))
cv.imshow('image', dst)
cv.waitKey()

五、透射变换
1.API
cv2.getPerspectiveTransform() cv2.warpPerspective()
2.代码演示
import cv2 as cv
import numpy as np
import matplotlib.pyplot as plt
img = cv.imread('Genshin.jpeg', -1)
cv.imshow('image', img)
img = cv.resize(img, None, fx=0.5, fy=0.5)
[rows, cols] = img.shape[:2]
pts1 = np.float32([[56, 65], [368, 52], [28, 138], [389, 390]])
pts2 = np.float32([[100, 145], [300, 100], [80, 290], [310, 300]])
T = cv.getPerspectiveTransform(pts1, pts2)
dst = cv.warpPerspective(img, T, (cols, rows))
cv.imshow('image', dst)
cv.waitKey()

六、图像金字塔
1.API
cv2.pyrUp(img) #对图像进行上采样 cv2.pyrDown(img) #对图像进行下采样
2.代码演示
import cv2 as cv
import numpy as np
import matplotlib.pyplot as plt
img = cv.imread('Genshin.jpeg', -1)
cv.imshow('image', img)
img = cv.pyrDown(img)
img = cv.pyrDown(img)
img = cv.pyrDown(img)
cv.imshow('image', img)
cv.waitKey()

总结
到此这篇关于OpenCV图像的几何变换处理的文章就介绍到这了,更多相关OpenCV图像几何变换内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
PyCharm搭建Spark开发环境实现第一个pyspark程序
这篇文章主要介绍了PyCharm搭建Spark开发环境实现第一个pyspark程序,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2019-06-06
python playwright 库上传和下载操作(自动化测试 playwright)
这篇文章主要介绍了python playwright 库上传和下载操作(自动化测试 playwright ),playwright中的上传和下载比selenium的上传和下载要简便些,本文结合实例代码给大家介绍的非常详细,需要的朋友可以参考下2023-05-05
python fuzzywuzzy模块模糊字符串匹配详细用法
这篇文章主要介绍了使用Python完成公司名称和地址的模糊匹配的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2019-08-08
Jupyter notebook设置背景主题,字体大小及自动补全代码的操作
这篇文章主要介绍了Jupyter notebook设置背景主题,字体大小及自动补全代码的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧2020-04-04
打包FlaskAdmin程序时关于static路径问题的解决
近期写了个基于Flask-admin的数据库管理程序,通过pyinstaller打包,给别人用,经过几次尝试,打包的数据一直找不到static里面的样式文件,查阅资料后,最总把问题搞定了。写下处理流程,供后来人参考2021-09-09


最新评论