OpenCV图像翻转:flip()函数的使用

2023-10-26

功能描述

flip()函数翻转一个二维的矩阵,包含垂直翻转,水平翻转,以及垂直水平翻转,

函数 cv::flip 以以下三种方式之一翻转矩阵(行和列索引从0开始):

\texttt{dst} _{ij} = \left\{ \begin{array}{l l} \texttt{src} _{\texttt{src.rows}-i-1,j} & if\; \texttt{flipCode} = 0 \\ \texttt{src} _{i, \texttt{src.cols} -j-1} & if\; \texttt{flipCode} > 0 \\ \texttt{src} _{ \texttt{src.rows} -i-1, \texttt{src.cols} -j-1} & if\; \texttt{flipCode} < 0 \\ \end{array} \right.

函数使用示例方案如下:

  • flipCode =0,垂直翻转图像,是源图像的top-left(左上)和bottom-left(左下)的交换,也就是说左上变成了左下,左下变成了左上,这是一个典型在的 Microsoft Windows操作系统里的视频处理操作。

  • flipCode > 0,图像的水平翻转,随后的水平位移和绝对方差计算,是为了检查图像是否y轴对称。

  • (flipCode < 0),图像同时垂直翻转和水平翻转,是为了以后的位移和绝对方差计算去检查图像是否是中心对称。

  • 反转点阵队列的顺序(flipCode > 0 或flipCode == 0).

原型

CV_EXPORTS_W void flip(InputArray src, OutputArray dst, int flipCode);

参数释义

  • 参数 src 输入矩阵.

  • 参数 dst 输出矩阵,和输入矩阵一样大小。

  • 参数 flipCode 一个标志,决定怎么翻转矩阵; 0 是围绕着x轴翻转,正直是围绕着y轴翻转,负值是围绕着两个轴一起翻转。 around both axes.

  • 参考 transpose , repeat , completeSymm

源码示例

#include <iostream>
#include <opencv2/opencv.hpp>
​
int main()
{
    cv::Mat image = cv::imread("D:\\OpenCVtest\\images\\juice.png");
    cv::Mat image_fliped;
    cv::flip(image, image_fliped, 0);
​
    cv::imshow("原图 juice", image);
    cv::imshow("垂直翻转 围绕x轴 juice", image_fliped);
​
    cv::flip(image, image_fliped, 1);
    cv::imshow("水平翻转 围绕Y轴 juice", image_fliped);
​
    cv::flip(image, image_fliped, -1);
    cv::imshow("水平翻转、垂直翻转同时 围绕X、Y轴 juice", image_fliped);
​
    cv::waitKey(0);
    return 0;
}

运行结果

垂直翻转 围绕x轴:

 

水平翻转 围绕Y轴

 

水平翻转、垂直翻转同时 围绕X、Y轴

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

OpenCV图像翻转:flip()函数的使用 的相关文章

  • 使用卡尔曼滤波器跟踪位置和速度

    我正在使用卡尔曼滤波器 恒定速度模型 来跟踪物体的位置和速度 我测量对象的 x y 并跟踪 x y vx vy 这是有效的 但是如果在传感器读数 x y vx vy 上添加 20 mm 的高斯噪声 即使该点没有移动 只是噪声也会发生波动 对
  • 使用python从gst管道抓取帧到opencv

    我在用着OpenCV http opencv org 和GStreamer0 10 我使用此管道通过自定义套接字通过 UDP 接收 MPEG ts 数据包sockfd由 python 提供并显示它xvimagesink 而且效果很好 以下命
  • 在骨架图像中查找线 OpenCV python

    我有以下图片 我想找到一些线来进行一些计算 平均长度等 我尝试使用HoughLinesP 但它找不到线 我能怎么做 这是我的代码 sk skeleton mask rows cols sk shape imgOut np zeros row
  • 使用 OpenCV 进行相机校准 - 如何调整棋盘方块大小?

    我正在使用 OpenCV Python 示例开发相机校准程序 来自 OpenCV 教程 http opencv python tutroals readthedocs io en latest py tutorials py calib3d
  • java.lang.UnsatisfiedLinkError:java.library.path中没有opencv_java2411

    我正在尝试将 opencv 添加到我的 Spring Boot Maven 项目中 为了使用 opencv 库 我必须在 java library path 中提供本机库 我已将以下命令添加到 Eclipse VM 参数中 Djava li
  • 车辆分割和跟踪

    我已经从事一个项目一段时间了 目的是在无人机捕获的视频中检测和跟踪 移动 车辆 目前我正在使用 SVM 该 SVM 接受了从车辆和背景图像中提取的局部特征的特征袋表示的训练 然后 我使用滑动窗口检测方法来尝试定位图像中的车辆 然后我想要跟踪
  • 在 Tensorflow-lite Android 中将位图转换为 ByteBuffer(浮点)

    在用于图像分类的tensorflow lite android演示代码中 图像首先转换为ByteBuffer格式以获得更好的性能 这种从位图到浮点格式的转换以及随后到字节缓冲区的转换似乎是一个昂贵的操作 循环 按位运算符 float mem
  • 在 virtualenvwrapper 中激活环境

    我安装了virtualenv and virtualenvwrapper用这个命令我创建了一个环境 mkvirtualenv cv 它有效 创建后我就处于新环境中 现在我重新启动了我的电脑 我想activate又是那个环境 但是怎么样 我使
  • 将 CvSeq 保存到数组

    我对 OpenCV 文档有点迷失 我想将 cvFindContours 返回的 CvSeq 保存到一个数组中 据我了解它将返回 CvContour 的 seq 但我找不到它包含的内容 我应该保存其中的哪些部分 稍后我可以迭代它并说调用 cv
  • 为什么在 OpenCV 中访问该矩阵时出现内存错误?

    我只是想写入给定大小的矩阵 当我在 Valgrind 中运行该程序时 出现内存错误 如下所示 主要 cpp include
  • OpenCV SVM 给出奇怪的预测结果

    我对 OpenCV 和支持向量机都很陌生 我想使用 SVM 训练具有两个标签的数据集 然后预测给定集合的标签 我当前的集合包含大约 600 行 具有相等的类分布 1 为 300 行 1 为 300 行 包含 34 列 这是我当前用于设置 O
  • opencv不失真图像有一个奇怪的圆圈

    我尝试使用 opencv 针孔模型来计算校准参数 然后使图像不失真 问题是 未失真的图像中有一个奇怪的圆圈 如下所示 代码 原始图像和结果图像是here https github com wennycooper A004 pinhole 任
  • 使用 OpenCV 从轮廓获取掩模

    我想从我通过 cv findContours 计算的轮廓 它只存在 1 个轮廓 获取图像掩模 然而 虽然我的轮廓变量不为空 但我无法使用 cv drawContours 检索图像蒙版 我的目标图像始终为空 这是我的代码 img mosaic
  • OpenCV InRange 参数

    我在 Android 上使用 OpenCV 来实时查找特定颜色的圆圈 我的第一步是仅保留与我正在寻找的定义颜色相对应的像素 在本例中为红色或绿色 示例图像 https i stack imgur com CIozU jpg 为此 我正在使用
  • 已过时 - OpenCV 的错误模式

    我正在使用 OpenCV 1 进行一些图像处理 并且对 cvSetErrMode 函数 它是 CxCore 的一部分 感到困惑 OpenCV 具有三种错误模式 叶 调用错误处理程序后 程序终止 Parent 程序没有终止 但错误处理程序被调
  • 如何计算 cv::Mat 的步幅

    我想知道如何计算步幅cv Mat 我已经更新了代码 我需要计算步幅 我不知道计算投影变换有什么问题 我得到一个cv Mat然后将其复制到unsigned int数组 然后对其进行转换 然后返回一个cv Mat待展示 cv Mat3b src
  • cv2.imdecode 始终返回 None

    我正在从存储 JPEG 图像的 sqlite BLOB 读取二进制数据 sqlite3 Binary 图像被写入数据库 img cv2 imread images image jpg c execute INSERT INTO pictur
  • 如何在没有 OpenCv Manager 的情况下运行 OpenCV 代码

    我正在使用 OpenCV4Android 版本 2 4 10 并在 Samsung Galayx GT I9300 上测试我的代码 我遇到的问题是 我必须从 Play 商店下载 Opencv Manager 以便我的 opencv 代码运行
  • ECC 导致多光谱图像的图像对齐失败

    我正在尝试将 RGB 图像与 IR 图像 单通道 对齐 目标是创建 4 通道图像 R G B IR 为了做到这一点 我正在使用cv2 findTransformECC如中所述这个非常简洁的指南 https learnopencv com i
  • 如何在 CMake Makefile 中包含 OpenCV 库

    我希望你可以帮助我 我有一个简单的 CMakeLists txt 以便在 Leopard 10 5 8 上构建我的项目 我正在使用 CMake 2 8 1 目前这是代码 cmake minimum required VERSION 2 8

随机推荐

  • ESP32 使用 Arduino 实现 OTA 更新

    在本指南中 您将学习如何使用库对 ESP32 开发板进行无线 OTA 更新 该库创建了一个网络服务器 允许您将新固件 新 sketch 上传到您的电路板 而无需在 ESP32 和您的计算机之间建立串行连接 此外 使用此库 您还可以将新文件上
  • Weex简介和环境的安装——Weex的学习之路(一)

    Weex 致力于使开发者能基于通用跨平台的 Web 开发语言和开发经验 来构建 Android iOS 和 Web 应用 简单来说 在集成了 WeexSDK 之后 你可以使用 JavaScript 语言和前端开发经验来开发移动应用 也就是说
  • 计算机网络总结篇-我们是怎么访问百度的?

    对于计算机网络的理解 我的理解便是从生活中剥削出的知识体系 但这个不能用生活完全的去理解 毕竟编程思维跟生活区别还是很大的 但是生活中的例子能让我们先理解一个大概 比如我说一个例子 我的同学 谭某 他这个人比较的贱 有很多仇家 有一天仇家a
  • 华为交换机关闭接口命令_华为交换机常用命令及技巧

    如果这篇文章对您有帮助 请关注并点赞 感谢您的支持 如果还有其他问题 请私信给我 前几期讲解了华为交换机的一些配置 今天讲解一些简单的命令和一些技巧 主要是显示华为交换机配置的一些命令 这些命令对于网络管理很有帮助 也是华为交换机的常用命令
  • java无法找到加载主类是什么意思,在Java程序运行时遇到的“Could not find or load main class(无法找到或者加载主类)”是什么意思?...

    其中是命令行选项 以 字符开头 是包含包名称的完整类名 是任意传递到应用程序的命令行参数 1 有一个名为 executable 的JAR文件的并不使用这种语法 稍后我将在底部对其进行描述 包含包名称的完整类名通常写成你在Java源代码中 你
  • [Qt]Qt(C++开发框架)下载安装

    Qt开发环境安装教程 Qt官方下载网址
  • 王者荣耀助手动态服务器维护中,王者荣耀助手动态怎么发不了

    发布时间 2015 11 20 王者荣耀助手礼包怎么领取 助手礼包领取地址是什么 下面来看看王者荣耀助手礼包怎么领取 助手礼包领取地址一览吧 希望能对大家有所帮助 蚕豆网王者荣耀开黑群 439442380 点击加入 亲爱的召唤师 安卓版 l
  • springboot -- 微服务 - 3.Eureka注册中心

    三 Eureka注册中心 3 1 作用 在Eureka架构中 微服务角色有两类 EurekaServer 服务端 注册中心 记录服务信息 心跳监控 EurekaClient 客户端 Provider 服务提供者 例如案例中的user ser
  • docker启动出现Error response from daemon: Cannot restart container的报错

    1 发现问题 突然发现启动 重启 容器的时候报这个错 Error response from daemon Cannot restart container 容器id driver failed programming external c
  • Spark自学之路(十三)——Spark 机器学习库

    Spark 机器学习库MLlib Spark提供了一个基于海量数据的机器学习库 它提供了常用机器学习算法的分布式实现 开发者只需要有 Spark 基础并且了解机器学习算法的原理 以及方法相关参数的含义 就可以轻松的通过调用相应的 API 来
  • LeetCode力扣刷题:27.移除元素

    第一版 还没领悟到双指针的内核 void swap int a int b int temp a a b b temp int removeElement int nums int numsSize int val int len nums
  • php三层架构erp,基于ERP/MES/PCS三层架构的现代集成制造系统模型

    数据集成是实施MES的基础将生产管理层的生产运行 产品质量 原料和产品输送 动力能耗等数据进行汇总和处理 使下层生产过程的实时信息和上层企业资源管理等的各类信息都在MES层中融合 并通过信息集成形成优化控制 优化调度和优化决策等调度或指令
  • 【电路】自用人体感应灯(HC-SR501人体感应模块)

    文章目录 低成本人体感应灯 需求分析 器件清单 参数测量 HC SR501人体感应模块 LED灯板 方案设计 思路简介 原理图 PCB设计 成品 低成本人体感应灯 需求分析 老旧小区地下室没有灯 找钥匙不方便 地理环境因素使用声音传感灯易发
  • 五年后端研发,跳槽薪资30k变成45k,总结的这些面试题,你会哪些

    每年的金三银四都是各大公司招聘程序员的最佳时期 在这段时间内有好多程序员会为了面试而发愁 不知道如何才能收到好的offer 拿到理想的薪资 实现自我的人生价值 我想告诉大家的是 其实都不用愁的 好好准备一下就可以了 每个人都想找一份大厂的
  • linux服务器安装jdk,maven详细步骤

    linux服务器安装jdk maven以及nginx详细步骤 一 安装jdk 使用命令安装 二 安装maven 1 将下载好的maven包放入linux下自定义文件夹 2 配置maven环境 打开profile文件 命令如下 一 安装jdk
  • C语言是用( )符号来标注字符常量,C语言符号常量的常考点

    各位计算机考研的小伙伴们 大家好 很开心以这样的方式和大家分享计算机考研的相关知识 今天给大家带来的内容是考研 C语言程序设计 中符号常量的常见考法 符号常量是用一个标识符来表示一个常量 特点是编译后写在代码区 不可寻址 不可更改 属于指令
  • stm32HAL库 G4 SPI 从机DMA可变长度接受数据乱码问题

    使用一个引脚当作SPI CS 边沿触发 在电平位0时候接受SPI数据20个字节 如果实际主机只发了小于20字节时候 下一个帧就会错乱 去老外找了之后 需要复位SPi RCC时钟才能复位掉SPI 下面的不行 正确的做法
  • 《剑指offer》系列---1

    最近一直在看剑指offer 这上面的题目都是比较考察编程能力的 打算做个记录 把写过的代码保存下来 1 实现一个string类 面试官的考察点应该在以下几点 1 模板类的书写 2 对于赋值函数考察的几点 1 是否返回引用 因为只有返回引用
  • 《面向对象程序设计C++》期末考试试卷

    面向对象程序设计C 期末考试试卷 一 选择题 每小题3分 共48分 01 下列关于C 函数的叙述中 正确的是 C A 每个函数至少要具有一个参数 B 每个函数都必须返回一个值 C 函数在被调用之前必须先声明 D 函数不能自己调用自己 02
  • OpenCV图像翻转:flip()函数的使用

    功能描述 flip 函数翻转一个二维的矩阵 包含垂直翻转 水平翻转 以及垂直水平翻转 函数 cv flip 以以下三种方式之一翻转矩阵 行和列索引从0开始 函数使用示例方案如下 flipCode 0 垂直翻转图像 是源图像的top left