OpenCV 圖形API(81)圖像與通道拼接函數-----透視變換函數warpPerspective()

  • 操作系統:ubuntu22.04
  • OpenCV版本:OpenCV4.9
  • IDE:Visual Studio Code
  • 編程語言:C++11

算法描述

對圖像應用透視變換。
函數 warpPerspective 使用指定的矩陣對源圖像進行變換:
dst ( x , y ) = src ( M 11 x + M 12 y + M 13 M 31 x + M 32 y + M 33 , M 21 x + M 22 y + M 23 M 31 x + M 32 y + M 33 ) \texttt{dst} (x,y) = \texttt{src} \left ( \frac{M_{11} x + M_{12} y + M_{13}}{M_{31} x + M_{32} y + M_{33}} , \frac{M_{21} x + M_{22} y + M_{23}}{M_{31} x + M_{32} y + M_{33}} \right ) dst(x,y)=src(M31?x+M32?y+M33?M11?x+M12?y+M13??,M31?x+M32?y+M33?M21?x+M22?y+M23??)
否則,變換矩陣會先通過 invertAffineTransform 被求逆,然后才代入上面的公式中代替 M。

該函數不能在原地操作(in-place)。

函數原型

GMat cv::gapi::warpPerspective
(const GMat &  	src,const Mat &  	M,const Size &  	dsize,int  	flags = cv::INTER_LINEAR,int  	borderMode = cv::BORDER_CONSTANT,const Scalar &  	borderValue = Scalar() 
) 	

參數

  • 參數 src:輸入圖像。
  • 參數 M:3×3 的變換矩陣。
  • 參數 dsize:輸出圖像的尺寸(寬度,高度)。
  • 參數flags:
    插值方法的組合(可選 INTER_LINEAR 或 INTER_NEAREST);
    可選標志 WARP_INVERSE_MAP,表示矩陣 M 是一個“逆變換”(即從目標圖像映射到源圖像,dst → src)。
  • 參數 borderMode:像素外推方法(支持 BORDER_CONSTANT 或 BORDER_REPLICATE)。
  • 參數borderValue:當邊界模式為常量填充時所使用的像素值;默認值為 0(黑色)。

代碼示例

#include <opencv2/opencv.hpp>
#include <opencv2/gapi.hpp>
#include <opencv2/gapi/core.hpp>
#include <opencv2/gapi/imgproc.hpp>using namespace cv;
using namespace cv::gapi;int main() {// 加載輸入圖像Mat src = imread("/media/dingxin/data/study/OpenCV/sources/images/Lenna.png");if (src.empty()) {std::cerr << "無法加載圖像!" << std::endl;return -1;}// 定義透視變換矩陣 MPoint2f src_pts[] = {Point2f(50, 50), Point2f(200, 50), Point2f(50, 200), Point2f(200, 200)};Point2f dst_pts[] = {Point2f(30, 30), Point2f(200, 20), Point2f(60, 180), Point2f(210, 190)};Mat M = getPerspectiveTransform(src_pts, dst_pts);// 定義輸出圖像尺寸Size new_size(src.cols, src.rows);// 定義 G-API 圖像處理圖(graph)GMat in;  // 輸入節點// 應用透視變換GMat out = gapi::warpPerspective(in, M, new_size, INTER_LINEAR, BORDER_CONSTANT, Scalar(0, 0, 0));// 構建 GComputationGComputation computation(in, out);// 執行計算Mat dst;computation.apply(src, dst);// 顯示結果imshow("原始圖像", src);imshow("透視變換后的圖像", dst);waitKey();return 0;
}

運行結果

在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/81994.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/81994.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/81994.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

深度學習在油氣地震資料反卷積中的應用

深度學習在油氣地震資料反卷積中的應用 基本原理 在油氣地震勘探中&#xff0c;反卷積(Deconvolution)是一種重要的信號處理技術&#xff0c;用于提高地震資料的分辨率。傳統方法(如維納濾波、預測反卷積等)存在對噪聲敏感、假設條件嚴格等局限。深度學習方法通過數據驅動的方…

Java開發者面試實錄:微服務架構與Spring Cloud的應用

面試場景 面試官: 請介紹一下你的基本情況。 程序員: 大家好&#xff0c;我叫張小明&#xff0c;今年27歲&#xff0c;碩士學歷&#xff0c;擁有5年的Java后端開發經驗。主要負責基于Spring Boot開發企業級應用&#xff0c;以及微服務架構的設計和實現。 面試官: 好的&#…

?Spring + Shiro 整合的核心要點及詳細實現說明

在 Spring 項目中集成 Apache Shiro 可以實現輕量級的安全控制&#xff08;認證、授權、會話管理等&#xff09;。以下是 ?Spring Shiro 整合的核心要點及詳細實現說明&#xff1a; 一、Spring 與 Shiro 整合的核心組件 ?組件??作用?ShiroFilterFactoryBean創建 Shiro 過…

網絡編程核心技術解析:從Socket基礎到實戰開發

網絡編程核心技術解析&#xff1a;從Socket基礎到實戰開發 一、Socket編程核心基礎 1. 主機字節序與網絡字節序&#xff1a;數據傳輸的統一語言 在計算機系統中&#xff0c;不同架構對多字節數據的存儲順序存在差異&#xff0c;而網絡通信需要統一的字節序標準&#xff0c;這…

SQLark可以支持PostgreSQL了,有哪些新功能?

SQLark&#xff08;百靈連接&#xff09;是一款國產的數據庫開發和管理工具&#xff0c;用于快速查詢、創建和管理不同類型的數據庫系統&#xff0c;支持達夢、Oracle 和 MySQL 數據庫。 最新發布的 SQLark V3.4 版本新增了對 PostgreSQL 數據庫的支持。我試用了一下&#xff…

【全面解析】Poco C++ Libraries 模塊詳解與使用指南

Poco&#xff08;The Portable Components&#xff09; 是一套現代 C 的跨平臺開發庫&#xff0c;廣泛應用于嵌入式系統、服務端程序、工業控制和 AI 后端服務等領域。其設計理念類似于 Java 的標準庫&#xff0c;為 C 提供“標準的非標準功能”。 本篇文章將帶你全面了解 Poco…

Vue+tdesign t-input-number 設置長度和顯示X號

一、需求 Vuetdesign t-input-number 想要設置input的maxlen和顯示X號 二、實現 t-input&#xff0c;可以直接使用maxlength和clearable屬性 <t-input v-model"value" clearable maxlength10 placeholder"請輸入" clear"onClear" blur&q…

(Go Gin)Gin學習筆記(二):路由配置、基本路由、表單參數、上傳單個文件、上傳多個文件、淺扒路由原理

1. 路由 gin 框架中采用的路優酷是基于httprouter做的 HttpRouter 是一個高性能的 HTTP 請求路由器&#xff0c;適用于 Go 語言。它的設計目標是提供高效的路由匹配和低內存占用&#xff0c;特別適合需要高性能和簡單路由的應用場景。 主要特點 顯式匹配&#xff1a;與其他路由…

Linux下的好玩的命令

在 CentOS 下&#xff0c;有許多有趣且實用的 Linux 命令&#xff0c;可以幫助你更好地了解系統、提升效率或進行娛樂。以下是一些好玩的 Linux 命令及其說明&#xff1a; 1. cowsay 和 cowthink 功能&#xff1a;讓一只牛&#xff08;或其他動物&#xff09;說出你想說的話。…

OpenharmonyOS+RK3568,【編譯燒錄】

文章目錄 1. 摘要 ?2. 代碼下載 &#x1f4e9;3. 編譯 &#x1f5a5;?4. 修改&適配 ??4.1 編譯框架基本概念4.2 vendor & device 目錄4.3 內核編譯4.3.1 如何修改、適配自己的開發板&#xff1f; 4.4 修改外設驅動 5. 燒錄&驗證 &#x1f4cb;參考 1. 摘要 ? …

深度學習模型優化:如何讓數據科學更智能?

深度學習模型優化:如何讓數據科學更智能? 一、引言:為什么優化深度學習模型如此重要? 深度學習的應用已經滲透到數據科學的各個領域,從圖像識別到自然語言處理,從推薦系統到金融風控,每一個智能模型都依賴于數據驅動的訓練。然而,一個模型的性能不僅僅取決于其架構,…

學習Python的第二天之網絡爬蟲

30歲程序員學習Python的第二天之網絡爬蟲的信息提取 BeautifulSoup庫 地址&#xff1a;https://beautifulsoup.readthedocs.io/zh-cn/v4.4.0/ 1、BeautifulSoup4安裝 在windows系統下通過管理員權限運行cmd窗口 運行pip install beautifulsoup4 測試實例 import requests…

n8n 鍵盤快捷鍵和控制鍵

n8n 鍵盤快捷鍵和控制鍵 工作流控制鍵畫布操作移動畫布畫布縮放畫布上的節點操作選中一個或多個節點時的快捷鍵 節點面板操作節點面板分類操作 節點內部操作 n8n 為部分操作提供了鍵盤快捷鍵。 工作流控制鍵 Ctrl Alt n&#xff1a;創建新工作流Ctrl o&#xff1a;打開工作…

keil+vscode+騰訊ai助手

嵌入式軟件開發 這個是之前一直想寫的開發方式&#xff0c;不過上份工作一直在忙&#xff0c;沒有抽出時間花在上面&#xff0c;現在空下來好好寫一寫吧&#xff01;標題軟件安裝 關于VSCode以及Keil的安裝可以在以下鏈接中點擊瀏覽 VSCode安裝 Keil5安裝 CubeMx安裝 插件下…

Unity教程(二十三)技能系統 投劍技能(上)基礎實現

Unity開發2D類銀河惡魔城游戲學習筆記 Unity教程&#xff08;零&#xff09;Unity和VS的使用相關內容 Unity教程&#xff08;一&#xff09;開始學習狀態機 Unity教程&#xff08;二&#xff09;角色移動的實現 Unity教程&#xff08;三&#xff09;角色跳躍的實現 Unity教程&…

Oracle01-入門

零、文章目錄 Oracle01-入門 1、Oracle簡介 &#xff08;1&#xff09;數據庫基礎 數據庫基礎請參考&#xff1a;https://blog.csdn.net/liyou123456789/article/details/131207068 &#xff08;2&#xff09;Oracle是什么 ORACLE 數據庫系統是美國 ORACLE 公司&#xff…

springboot集成mybatis-plus詳細使用

以下是 Spring Boot 集成 MyBatis-Plus 的詳細步驟&#xff1a; 創建 Spring Boot 項目 可使用 Spring Initializr 快速創建項目&#xff0c;添加相關依賴。 引入依賴 在項目 pom.xml 文件中添加以下依賴&#xff1a; <!-- MyBatis-Plus 啟動依賴 --> <dependenc…

【wsl】命令說明,wsl的虛擬機ubuntu十分好用

wsl官方說明地址 wsl虛擬機安裝簡單方便&#xff0c;十分推薦。 安裝 在上方的官網鏈接有安裝辦法和各種操作指南&#xff0c;在此不再贅述。 安裝wsl后從微軟商店搜索ubuntu點擊后就能直接安裝虛擬機鏡像&#xff0c;多快好省。 wsl命令 閱讀官網文檔時發現wsl十分強大 …

Open CASCADE學習|判斷一點與圓弧的位置關系

一、引言 在計算機輔助設計&#xff08;CAD&#xff09;、計算機圖形學以及機械制造等眾多領域中&#xff0c;經常需要處理幾何圖形之間的位置關系判斷問題。其中&#xff0c;判斷一個點與圓弧的位置關系是一個基礎且重要的任務。Open CASCADE 作為一個強大的開源幾何建模內核…

<論文>(字節跳動)使用大語言模型進行時間序列理解和推理

一、摘要 本文介紹2024年12月字節跳動牽頭發表的大模型論文《ChatTS: Aligning Time Series with LLMs via Synthetic Data for Enhanced Understanding and Reasoning》。論文提出了 ChatTS 模型&#xff0c;用合成數據提升對時間序列的理解和推理能力。作者在紐約出租車乘客數…