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

图像变换方式区别对比(Opencv)

1. 变换示例

import cv2
import matplotlib.pyplot as plot

img = cv2.imread(url)
img_cut = img[100:200, 200:300]
img_rsize = cv2.resize(img, (50, 50))
(hight,width) = img.shape[:2]
rotate_matrix = cv2.getRotationMatrix2D((hight//2, width//2), 50, 1)
img_wa = cv2.warpAffine(img, rotate_matrix, (width, hight))
img_fp = cv2.flip(img, -1)

plot.figure(figsize=(15,3));
plot.subplot(1,5,1)
plot.title('source image')
plot.imshow(img)
plot.subplot(1,5,2)
plot.title('cut')
plot.imshow(img_cut)
plot.subplot(1,5,3)
plot.title('resize')
plot.imshow(img_rsize)
plot.subplot(1,5,4)
plot.title('rotate affine')
plot.imshow(img_wa)
plot.subplot(1,5,5)
plot.title('flip')
plot.imshow(img_fp)

plot.show()

在这里插入图片描述

2. 改变尺寸

resize(src, dsize, dst=None, fx=None, fy=None, interpolation=None)

  1. 返回:变形后图像
  2. src:原始图像
  3. dsize:目标尺寸(宽,高)
  4. fx:宽度方向缩放比例
  5. fy:高度方向缩放比例
  6. interpolation:插值方式,默认为线性插值

3. 旋转变形

getRotationMatrix2D(center, angle, scale)

  1. 返回:变换矩阵
  2. center:旋转中心坐标,是一个元组参数(col, row)
  3. angle:旋转角度,旋转方向,负号为逆时针,正号为顺时针
  4. scale:旋转后图像相比原来的缩放比例,1为等比例缩放

cv2.warpAffine(img,M,(rows,cols),flags=cv2.INTER_,borderMode=cv2.BORDER_REFLECT,borderValue=(255,255,255))

  1. 返回:变换后的图像
  2. src: 原始图像。
  3. M: 仿射变换矩阵,平移或旋转的2×3的变换矩阵
  4. dsize: 输出图像的大小。
  5. flags: 插值方式,默认线性插值
  6. borderMode: 边界像素模式,Constant: 使用常数值(borderValue)填充超出边界的区域,Replicate: 复制边界像素,Reflect: 使用反射模式填充
  7. borderValue: 边界填充值; 默认0

日常进行仿射变换时,在只设置前三个参数的情况下,如 cv2.warpAffine(img,M,(rows,cols))可以实现基本的仿射变换效果,但可以出现“黑边”现象

4. 图像翻转

flip(src, code)

  1. 返回:翻转后图像
  2. src:原始图像
  3. code:翻转方向,0:上下翻转, 1:左右翻转,-1:上下左右同时翻转

5. 图像插值类型

参数算法数值
INTER_NEAREST最邻近插值0
INTER_LINEAR双线性插值 (默认)1
INTER_CUBIC4x4像素邻域内的双立方插值2
INTER_AREA使用像素区域关系进行重采样3
INTER_LANCZOS48x8像素邻域内的Lanczos插值4

相关文章:

  • git仓库中.git文件夹过大的问题
  • 文件IO4(提高LCD显示效率/BMP图像原理与应用)
  • 循环神经网络 - 长短期记忆网络
  • 蓝桥杯练习题1
  • 论文精读:MSCA-Net:多尺度上下文聚合网络在红外小目标检测中的突破
  • 二分查找5:852. 山脉数组的峰顶索引
  • leetcode589 N叉树的前序遍历
  • ✨ MOS开关的非线性因素详解 ✨
  • 【数据结构】时间和空间复杂度
  • host模式容器compose建立记录
  • ASEG的鉴定
  • DAPP实战篇:使用web3.js实现前端输入钱包地址查询该地址的USDT余额—操作篇
  • 【智驾中的大模型 -1】自动驾驶场景中的大模型
  • 第四讲、Isaaclab与刚性物体交互
  • C++的*了又*
  • vue项目引入tailwindcss
  • 【基于开源insightface的人脸检测,人脸识别初步测试】
  • 本地部署DeepSeek-R1,搭建本地知识库
  • 查看容器内的eth0网卡对应宿主机上的哪块网卡
  • 视频云存储/对象存储EasyCVR视频汇聚平台对接S3存储不能持久化运行的原因排查
  • 买完阿里云域名如何做网站/工具大全
  • 上海公司牌照价格最新价格/seo博客教程
  • 网页设计与网站建设 倪宝童/seo教程seo教程
  • 怎么做网页app/站长工具seo排名查询
  • html网站开发心得体会/市场营销手段13种手段
  • 优化外贸网站/白云百度seo公司