OpenCV(十):图像缩放、翻转、拼接的介绍与使用

目录

(1)图像缩放:resize()

(2)图像翻转: flip()

(3)图像拼接:hconcat() 和vconcat()


(1)图像缩放:resize()

使用 cv2.resize() 函数可以实现图像的缩放。你需要指定目标图像的大小或缩放比例以及插值方法。

void cv::resize ( InputArraysrc

OutputArray dst,

Size   dsize,

double   fx,

double    fy,

int           interpolation = INTER LINEAR(双线性插值)

  • src:输入图像。
  • dst:输出图像,图像的数据类型与src相同。
  • dsize:输出图像的尺寸。
  • fx:水平轴的比例因子,如果将水平轴变为原来的两倍,则赋值为2。
  • fy:垂直轴的比例因子,如果将垂直轴变为原来的两倍,则赋值为2。
  • interpolation:差值方法的标志。

以下是常用的 interpolation 参数及其描述:

  1. cv2.INTER_NEAREST:最近邻插值

    • 这是一种最简单的插值方法,它根据目标位置附近的最近一个已知像素的值来估算新的像素值。速度很快,但可能会导致块状的图像效果,特别是在放大图像时。

  2. cv2.INTER_LINEAR:双线性插值

    • 双线性插值考虑了目标位置附近的四个最近已知像素的值,然后根据距离和权重进行插值计算。这通常提供比最近邻插值更平滑的结果。

  3. cv2.INTER_CUBIC:双三次插值

    • 双三次插值使用目标位置附近的16个最近已知像素,根据距离和权重进行插值。它可以提供更高质量的图像,但计算开销较大。

  4. cv2.INTER_LANCZOS4:Lanczos 插值

    • Lanczos 插值是一种高质量的插值方法,它使用一个较大的像素邻域来进行插值。它通常用于需要高质量图像的情况,但计算成本更高。

  5. cv2.INTER_AREA:像素区域重采样

    • 像素区域重采样是一种在图像缩小时常用的插值方法,它会根据目标位置附近的像素区域的平均值来计算新的像素值。这可以减少图像的模糊程度。

例子:

         

        (原图)                                (gray)


Mat gray;cvtColor(image,gray,COLOR_BGR2GRAY);Mat smallmg,bigImg0,bigImg1,bigImg2;resize(gray,smallmg,Size(15,15),0,0,INTER_AREA);//先将图像缩小resize(smallmg,bigImg0,Size(30,30),0,0,INTER_NEAREST);//最近邻插值resize(smallmg,bigImg1,Size(30,30),0,0,INTER_LINEAR);//双线性插值resize(smallmg,bigImg2,Size(30,30),0,0,INTER_CUBIC);//双三次插值

(smallmg)              (bigImg0)               (bigImg1)            (bigImg2)

(2)图像翻转: flip()

使用 cv2.flip() 函数可以实现图像的翻转。你需要指定图像和翻转方向(水平、垂直或同时水平和垂直)。

void cv::flip ( InputArray     src,

OutputArray dst,

int                 flipCode

  • src:输入图像
  • dst: 输出图像,与src具有相同的大小和数据类型以及通道数。
  • flipCode: 翻转方式标志,当 flipCode 的值大于0时,图像将在水平方向上进行翻转,即左右镜像。 当 flipCode 的值为 0 时,图像将在垂直方向上进行翻转,即上下镜像。 当 flipCode 的值小于0时,图像将在水平和垂直方向上同时进行翻转,即左右上下镜像。

例子:

Mat img_x,img_y,img_xy;flip(gray,img_x,0);//沿x轴对称flip(gray,img_y,1);//沿y轴对称flip(gray,img_xy,-1);//沿x轴对称,再沿y轴对称

 

    (img_x)                               (img_y)                    (img_xy)

(3)图像拼接:hconcat() 和vconcat()

图像拼接通常涉及将多个图像在水平或垂直方向上连接起来,创建一个更大的图像。使用 cv2.hconcat() 和 cv2.vconcat() 函数可以在水平和垂直方向上进行图像拼接。

void cv::hconcat ( InputArray    src1,

InputArray  src2,

OutputArray dst

void cv::vconcat ( InputArray  src1,

InputArray  src2,

OutputArray   dst

  • src1:第一个需要连接的Mat类矩阵。
  • src2:第二个需要连接的Mat类矩阵,与第一个参数具有相同的宽度、数据类型和通道数。
  • dst:连接后的Mat类矩阵。

例子:

//图像横向连接Mat imgh,imgv;hconcat(img_x,img_y,imgh);//图像竖向连接vconcat(img_x,img_y,imgv);

   

       (imgh)                                                                          (imgv)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/117229.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

leetcode 1022.从根到叶的二进制数之和

⭐️ 题目描述 🌟 leetcode链接:https://leetcode.cn/problems/sum-of-root-to-leaf-binary-numbers/description/ 代码: class Solution { public:int sum (TreeNode* root , int num 0) {if (root nullptr) {return 0;}int cur num r…

【数学建模竞赛】各类题型及解题方案

评价类赛题建模流程及总结 建模步骤 建立评价指标->评价体系->同向化处理(都越多越好或越少越少)->指标无量纲处理 ->权重-> 主客观->合成 主客观评价问题的区别 主客观概念主要是在指标定权时来划分的。主观评价与客观评价的区别…

QUdpSocket Class

继承自 QAbstractSocket 类 QUdpSocket类提供UDP套接字。 UDP(用户数据报协议)是一种轻量级、不可靠、面向数据报、无连接的协议。它可以在可靠性不重要的情况下使用。QUdpSocket是QAbstractSocket的一个子类,它允许您发送和接收UDP数据报。 使用这个类最常见的方法…

一文1800字从0到1使用Python Flask实战构建Web应用

Python Flask是一个轻量级的Web框架,它简单易用、灵活性高,适用于构建各种规模的Web应用。本文将介绍如何使用Python Flask框架来实战构建一个简单的Web应用,并展示其基本功能和特性。 第一部分:搭建开发环境 在开始之前我们需要…

docker部署nginx,部署springboot项目,并实现访问

一、先部署springboot项目 1、安装docker: yum install docker -y 2、启动docker: service docker start 重启: service docker restart 3、查看版本: docker -v 4、使设置docker.service生效(路径:…

游戏思考30(补充版):关于逆水寒铁牢关副本、白石副本和技能的一些注释(2023/0902)

前期介绍 我是一名逆水寒的玩家,做一些游戏的笔记当作攻略记录下来,荣光不朽-帝霸来源视频连接 传送门 一、旧版铁牢关(非逆水寒老兵服) (1)老一:巨鹰 1)机制一:三阵风…

Bert和LSTM:情绪分类中的表现

一、说明 这篇文章的目的是评估和比较 2 种深度学习算法(BERT 和 LSTM)在情感分析中进行二元分类的性能。评估将侧重于两个关键指标:准确性(衡量整体分类性能)和训练时间(评估每种算法的效率)。…

TDesign在按钮上加入图标组件

在实际开发中 我们经常会遇到例如 添加或者查询 我们需要在按钮上加入图标的操作 TDesign自然也有预备这样的操作 首先我们打开文档看到图标 例如 我们先用某些图标 就可以点开下面的代码 可以看到 我们的图标大部分都是直接用tdesign-icons-vue 导入他的组件就可以了 而我…

LabVIEW计算测量路径输出端随机变量的概率分布密度

LabVIEW计算测量路径输出端随机变量的概率分布密度 今天,开发算法和软件来解决计量综合的问题,即为特定问题寻找最佳测量算法。提出了算法支持,以便从计量上综合测量路径并确定所开发测量仪器的测量误差。测量路径由串联的几个块组成&#x…

Flutter启动页

效果图 import dart:async; import package:flutter/cupertino.dart; import package:flutter/material.dart; import jumpPage.dart;class TransitPage extends StatefulWidget {const TransitPage({super.key});overrideState<TransitPage> createState() > _Trans…

【项目 计网8】4.23 TCP状态转换 4.24半关闭、端口复用

文章目录 4.23 TCP状态转换关于三次握手四次挥手 4.24半关闭、端口复用端口复用 4.23 TCP状态转换 2MSL(Maximum Segment Lifetime) 主动断开连接的一方&#xff0c;最后进入一个TIME_WAIT状态&#xff0c;这个状态会持续&#xff1a;2msl msl&#xff1a;官方建议&#xff1a;…

Private market:借助ZK实现的任意计算的trustless交易

1. 引言 Private market&#xff0c;借助zk-SNARKs和以太坊来 隐私且trustlessly selling&#xff1a; 1&#xff09;以太坊地址的私钥&#xff08;ECDSA keypair&#xff09;2&#xff09;EdDSA签名3&#xff09;Groth16 proof&#xff1a;借助递归性来匿名交易Groth16 proo…

NCCoE发布“向后量子密码学迁移”项目进展情况说明书

近日&#xff0c;NIST下属的国家网络安全中心&#xff08;NCCoE&#xff09;发布了一份向后量子密码学迁移&#xff08;Migration to Post-Quantum Cryptography&#xff09;项目情况说明书。该文档简要概述了向后量子密码学迁移项目的背景、目标、挑战、好处和工作流程&#x…

flutter plugins插件【三】【Flutter Intl】

3、 Flutter Intl 多语言国际化 在Android Studio中菜单Tools找到flutter intl创建多语言配置。 创建后会在pubspec.yaml出现 flutter_intl:enabled: true 在工程的lib会生成l10n与generated文件夹 l10n包含 intl_en.arb intl_zn.arb 我们在intl_en.arb添加 { home: &quo…

说说HTTP 和 HTTPS 有什么区别?

分析&回答 http协议 超文本传输协议&#xff0c;是互联网上应用最多的协议&#xff0c;基于TCP/IP通讯协议来传递信息&#xff0c;用于从WWW服务器传输超文本到本地浏览器的传输协议。 https协议 我们可以将其看作是以安全为目标的http协议。在http协议的基础上增加了S…

stm32 iap sd卡升级

参考&#xff1a;STM32F4 IAP 跳转 APP问题_stm32程序跳转_古城码农的博客-CSDN博客 app程序改两个位置 1.程序首地址&#xff1a; 2.改中断向量表位移&#xff0c;偏移量和上面一样就可以 然后编译成bin文件就可以了

K-Means(K-均值)聚类算法理论和实战

目录 K-Means 算法 K-Means 术语 K 值如何确定 K-Means 场景 美国总统大选摇争取摆选民 电商平台用户分层 给亚洲球队做聚类 ​编辑 其他场景 K-Means 工作流程 K-Means 开发流程 K-Means的底层代码实现 K-Means 的评价标准 K-Means 算法 对于 n 个样本点来说&am…

五、高并发内存池--Thread Cache

五、高并发内存池–Thread Cache 5.1 Thread Cache的工作原理 thread cache是哈希桶结构&#xff0c;每个桶是一个按桶位置映射大小的内存块对象的自由链表。每个线程都会有一个thread cache对象&#xff0c;这样每个线程在这里获取对象和释放对象时都是无锁的。 每一个线程…

查询优化器内核剖析之查询的执行与计划的缓存 Hint 提示

本篇议题如下: 查询的执行与计划的缓存 Hint 提示 首先看到第一个议题 查询的执行与计划的缓存 一旦查询被优化之后&#xff0c;存储引擎就使用选中的执行计划将结果返回&#xff0c;而被使用的这个执行 计划就会被保存在内存中一个被称之为“计划缓存”的地方&#xff0c;从…

MyBatis多表查询

1. 多表关系回顾 在项目开发当中一对一关系的表不常见&#xff0c;因为一对一关系的两张表通常会合并为一张表。 2. 一对一查询 一张表对应一个实体类&#xff0c;一个实体类对应一个Mapper接口。 例如&#xff1a;查询菜品&#xff0c;同时查询出该菜品所属的分类。 分析&…