当前位置: 首页 > news >正文

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

 

http://www.lryc.cn/news/318210.html

相关文章:

  • 鸿蒙 - 读取 rawfile 中的 json 文件
  • 【Stable Diffusion】入门-02:AI绘画提示词+参数设置攻略
  • Spring Boot启动时执行初始化操作的几种方式
  • 考研失败, 学点Java打小工——Day3
  • 【Stable Diffusion】入门-01:原理简介+应用安装(Windows)+生成步骤
  • VueX详解
  • 2023 年 9 月青少年软编等考 C 语言一级真题解析
  • 避免阻塞主线程 —— Web Worker 示例项目
  • matlab 基操~
  • HTML5、CSS3面试题(一)
  • 图片压缩神器源码系统:无损画质 带完整的代码安装包以及搭建教程
  • 探索SOCKS5代理、代理IP、HTTP与网络安全
  • 【Python学习篇】Python基础入门学习——你好Python(一)
  • 【通信原理笔记】【二】随机信号分析——2.2 平稳随机过程
  • 新火种AI|GPT-4诞生1年,OpenAI把它放到了机器人上
  • 8-图像放大
  • java实现压缩文件夹(层级压缩)下载,java打包压缩文件夹下载
  • Visual Studio 2022 配置“Debug|x64”的 Designtime 生成失败。IntelliSense 可能不可用。
  • Pandas教程16:DataFrame列标题批量重命名+空df数据判断+列名顺序重排
  • React.FC介绍
  • 为什么要用scrapy爬虫库?而不是纯python进行爬虫?
  • C:数据结构王道
  • Compose UI 之 Buttons 按钮 IconButtons 图标按钮
  • 吴恩达机器学习笔记 二十一 迁移学习 预训练
  • Python中Pandas常用函数及案例详解
  • VR全景看房:超越传统的看房方式
  • pip 配置镜像加速安装
  • LUA语法复习总结
  • 某赛通电子文档安全管理系统 DecryptApplication 任意文件读取漏洞(2024年3月发布)
  • Mac-自动操作 实现双击即可执行shell脚本