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

OpenCV 图形API(72)图像与通道拼接函数-----根据指定的方式翻转图像(GMat)函数 flip()

  • 操作系统:ubuntu22.04
  • OpenCV版本:OpenCV4.9
  • IDE:Visual Studio Code
  • 编程语言:C++11

算法描述

翻转一个2D矩阵,围绕垂直轴、水平轴或同时围绕两个轴。
该函数以三种不同的方式之一翻转矩阵(行和列的索引是从0开始的):
dst i j = { src src.rows − i − 1 , j i f flipCode = 0 src i , src.cols − j − 1 i f flipCode > 0 src src.rows − i − 1 , src.cols − j − 1 i f flipCode < 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. dstij= srcsrc.rowsi1,jsrci,src.colsj1srcsrc.rowsi1,src.colsj1ifflipCode=0ifflipCode>0ifflipCode<0
使用该函数的一些示例场景如下:

  • 当 flipCode == 0 时,图像的垂直翻转用于在左上角和左下角图像原点之间切换。这是在 Microsoft Windows* 操作系统上进行视频处理的典型操作。
  • 当 flipCode > 0 时,对图像进行水平翻转,然后进行水平位移并计算绝对差值以检查是否存在垂直轴对称性。
  • 当 flipCode < 0 时,同时进行水平和垂直翻转,然后进行位移并计算绝对差值以检查是否存在中心对称性。
    反转点数组的顺序(flipCode > 0 或 flipCode == 0)。

输出图像必须与输入图像具有相同的深度,尺寸应根据给定的 flipCode 正确设置。

注意:

函数的文字ID是 “org.opencv.core.transform.flip”

函数原型

GMat cv::gapi::flip 	
(const GMat &  	src,int  	flipCode 
) 	

参数

  • 参数 src: 输入矩阵。
  • 参数 flipCode: 一个标志,指定如何翻转数组;0表示绕x轴翻转,正值(例如1)表示绕y轴翻转。负值(例如-1)表示同时绕两个轴翻转。

代码示例

#include <opencv2/gapi.hpp>
#include <opencv2/gapi/core.hpp>
#include <opencv2/opencv.hpp>int main()
{// 创建一个测试图像cv::Mat img = cv::imread( "/media/dingxin/data/study/OpenCV/sources/images/Lenna.png" );if ( img.empty() ){std::cerr << "无法加载图像" << std::endl;return -1;}// 定义翻转模式,例如沿Y轴翻转(水平翻转)int flipCode = 1;  // 0: 垂直翻转, 1: 水平翻转, -1: 同时垂直和水平翻转// 将cv::Mat转换为GMatcv::GMat in;auto flipped = cv::gapi::flip( in, flipCode );// 定义并编译G-API图cv::GComputation flip_comp( cv::GIn( in ), cv::GOut( flipped ) );cv::Mat flipped_img;// 应用G-API图到输入图像flip_comp.apply( cv::gin( img ), cv::gout( flipped_img ) );// 显示原始和翻转后的图像cv::imshow( "Original Image", img );cv::imshow( "Flipped Image", flipped_img );cv::waitKey();return 0;
}

运行结果

在这里插入图片描述

相关文章:

  • zynq上的裸机lwip网络性能测试iperf使用心得
  • UI-TARS论文解读 并提供镜像
  • Elasticsearch:ES|QL lookup JOIN 介绍 - 8.18/9.0
  • 水污染检测数据集VOC+YOLO格式2487张4类别
  • Tshark:强大的命令行网络抓包与分析工具
  • Electron读取本地文件
  • kafka消息的顺序性如何保持一致的
  • Windows 10系统中找回MySQL 8的root密码
  • 智能电子白板的设计与实现:从硬件选型到软件编程
  • python初学
  • 基于Spring Boot 电商书城平台系统设计与实现(源码+文档+部署讲解)
  • python celery框架结合django的使用
  • 深度剖析 RocketMQ 5.0 之架构解析:云原生架构如何支撑多元化场景?
  • 浅析通用文字识别技术在档案管理中的未来发展趋势
  • MySQL学习总结
  • 【2024-NIPS-版权】Evaluating Copyright Takedown Methods for Language Models
  • 使用Qt QAxObject解决Visual Fox Pro数据库乱码问题
  • 马井堂-区块链技术:架构创新、产业变革与治理挑战(马井堂)
  • 代码随想录第39天|leetcode198.打家劫舍、leetcode213.打家劫舍II 、leetcode337.打家劫舍III
  • JVM GC垃圾回收算法
  • “上海-日喀则”直飞航线正式通航,将于5月1日开启首航
  • 幸福航空取消“五一”前航班,财务人员透露“没钱飞了”
  • 央行副行长:研究建立民营中小企业增信制度,破解民营中小企业信用不足等融资制约
  • 上海市市管干部任职前公示:赵亮拟为地区区长人选
  • 印方称与巴基斯坦军队在克什米尔交火
  • 大漠孤烟为何“直”?物理学家在唐诗中读出“不一样的美”