脚本之家,脚本语言编程技术及教程分享平台!
分类导航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|shell|

服务器之家 - 脚本之家 - Python - OpenCV图像的几何变换处理方法详解

OpenCV图像的几何变换处理方法详解

2024-03-13 15:43一二爱上蜜桃猫 Python

这篇文章主要给大家介绍了关于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()

OpenCV图像的几何变换处理方法详解

三、图像旋转

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()

OpenCV图像的几何变换处理方法详解

四、仿射变换

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()

OpenCV图像的几何变换处理方法详解

五、透射变换

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()

OpenCV图像的几何变换处理方法详解

六、图像金字塔

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图像的几何变换处理的文章就介绍到这了,更多相关OpenCV图像几何变换内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://blog.csdn.net/obstacle19/article/details/136630075

延伸 · 阅读

精彩推荐
  • Pythonpython+selenium打印当前页面的titl和url方法

    python+selenium打印当前页面的titl和url方法

    今天小编就为大家分享一篇python+selenium打印当前页面的titl和url方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    爱唱歌de小青蛙11532021-03-08
  • PythonPython实现打砖块小游戏代码实例

    Python实现打砖块小游戏代码实例

    这篇文章主要介绍了Python打砖块小游戏,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编...

    momobaba20183772021-06-28
  • PythonPython中单、双下划线的区别总结

    Python中单、双下划线的区别总结

    这篇文章主要给大家介绍了关于Python中单、双下划线区别的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值...

    时间轨迹3972020-12-21
  • Pythonpython基于xmlrpc实现二进制文件传输的方法

    python基于xmlrpc实现二进制文件传输的方法

    这篇文章主要介绍了python基于xmlrpc实现二进制文件传输的方法,实例分析了xmlrpclib模块的使用技巧,需要的朋友可以参考下 ...

    songguo4322020-07-10
  • Pythonpython解决12306登录验证码的实现

    python解决12306登录验证码的实现

    这篇文章主要介绍了python解决12306登录验证码的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们...

    g子荣12862021-10-14
  • Pythonpytorch中的model.eval()和BN层的使用

    pytorch中的model.eval()和BN层的使用

    这篇文章主要介绍了pytorch中的model.eval()和BN层的使用,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...

    那抹阳光199410312021-11-10
  • Python聊聊Python代码中if __name__ == ‘__main__‘的作用是什么

    聊聊Python代码中if __name__ == ‘__main__‘的作用是什么

    一个python文件通常有两种使用方法,第一是作为脚本直接执行,第二是 import 到其他的python脚本中被调用执行,这篇文章主要给大家介绍了关于Python代码中if _...

    昊虹图像算法11582022-11-04
  • Python深度强化学习-DDPG算法原理与代码

    深度强化学习-DDPG算法原理与代码

    Deep Deterministic Policy Gradient (DDPG)算法是DeepMind团队提出的一种专门用于解决连续控制问题的在线式(on-line)深度强化学习算法,它其实本质上借鉴了Deep Q-Netw...

    indigo love10582023-10-11