OpenCV 圖形API(37)圖像濾波-----分離過濾器函數sepFilter()

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

算法描述

應用一個可分離的線性濾波器到一個矩陣(圖像)。

該函數對矩陣應用一個可分離的線性濾波器。也就是說,首先,src 的每一行都用一維核 kernelX 進行濾波。然后,所得結果的每一列都使用一維核 kernelY 進行濾波。最終結果被返回。

支持的矩陣數據類型包括 CV_8UC1, CV_8UC3, CV_16UC1, CV_16SC1, CV_32FC1。輸出圖像必須與輸入圖像具有相同的類型、大小和通道數。

cv::gapi::sepFilter 是 OpenCV 的 G-API 模塊中用于對圖像應用分離過濾器(separable filter)的一個函數。這個函數可以用來執行高效的二維卷積操作,特別適用于那些可以分解為兩個一維濾波器的情況。

函數原型

GMat cv::gapi::sepFilter 	
(const GMat &  	src,int  	ddepth,const Mat &  	kernelX,const Mat &  	kernelY,const Point &  	anchor,const Scalar &  	delta,int  	borderType = BORDER_DEFAULT,const Scalar &  	borderValue = Scalar(0) 
) 		

注意:
在浮點計算的情況下,如果硬件支持,則會進行向最近的偶數舍入(如果沒有,則舍入到最近的值)。
函數文本ID是 “org.opencv.imgproc.filters.sepfilter”。

參數

  • 參數 src: 源圖像。

  • 參數 ddepth: 目標圖像的期望深度(支持以下 src.depth() 和 ddepth 的組合:

    • 當 src.depth() = CV_8U 時,ddepth 可以是 -1/CV_16S/CV_32F/CV_64F
    • 當 src.depth() = CV_16U/CV_16S 時,ddepth 可以是 -1/CV_32F/CV_64F
    • 當 src.depth() = CV_32F 時,ddepth 可以是 -1/CV_32F/CV_64F
    • 當 src.depth() = CV_64F 時,ddepth 可以是 -1/CV_64F 如果 ddepth=-1,輸出圖像將具有與源相同的深度)
  • 參數kernelX: 用于濾波每一行的系數。

  • 參數 kernelY: 用于濾波每一列的系數。

  • 參數 anchor: 核內的錨點位置。默認值 (-1,-1) 表示錨點位于內核中心。

  • 參數 delta: 在存儲之前添加到濾波結果中的值。

  • 參數 borderType: 像素外推方法,參見 cv::BorderTypes。

  • 參數 borderValue: 在常量邊界類型的情況下的邊界值。

代碼示例

#include <opencv2/gapi/gkernel.hpp>
#include <opencv2/gapi/imgproc.hpp>
#include <opencv2/opencv.hpp>int main()
{// 讀取輸入圖像cv::Mat src = cv::imread( "/media/dingxin/data/study/OpenCV/sources/images/Lenna.png", cv::IMREAD_COLOR );if ( src.empty() ){std::cerr << "無法讀取圖像" << std::endl;return -1;}// 定義水平和垂直方向的卷積核cv::Mat kernelX = ( cv::Mat_< float >( 1, 3 ) << 1.0, 2.0, 1.0 );  // 示例水平卷積核cv::Mat kernelY = ( cv::Mat_< float >( 3, 1 ) << 1.0, 2.0, 1.0 );  // 示例垂直卷積核// 設置ddepth、anchor、delta和borderType等參數int ddepth = -1;             // 輸出圖像將具有與src相同的深度cv::Point anchor( -1, -1 );  // 錨點位于卷積核中心double delta   = 0;          // 不添加額外值int borderType = cv::BORDER_DEFAULT;// 創建G-API網絡cv::GMat in;auto out = cv::gapi::sepFilter( in, ddepth, kernelX, kernelY, anchor, cv::Scalar( delta ), borderType );cv::GComputation comp( cv::GIn( in ), cv::GOut( out ) );// 應用到源圖像并獲取結果cv::Mat dst;comp.apply( cv::gin( src ), cv::gout( dst ) );// 顯示結果cv::imshow( "Original Image", src );cv::imshow( "Filtered Image", dst );cv::waitKey( 0 );return 0;
}

運行結果

在這里插入圖片描述

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

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

相關文章

webpack理解與使用

一、背景 webpack的最初目標是實現前端工程的模塊化&#xff0c;旨在更高效的管理和維護項目中的每一個資源。 最早的時候&#xff0c;我們通過文件劃分的方式實現模塊化&#xff0c;也就是將每個功能及其相關狀態數據都放在一個JS文件中&#xff0c;約定每個文件就是一個獨立…

rac環境下,增加一個控制文件controlfile

先關閉節點二&#xff0c;在節點一上操作 1、查看控制文件個數和路徑 SQL> show parameter control 2、備份參數文件 SQL> create pfile/home/oracle/orcl.pfile20250417 from spfile; 3、修改控制文件參數 SQL> alter system set contr…

git安裝(windows)

通過網盤分享的文件&#xff1a;資料(1) 鏈接: https://pan.baidu.com/s/1MAenYzcQ436MlKbIYQidoQ 提取碼: evu6 點擊next 可修改安裝路徑 默認就行 一般從命令行調用&#xff0c;所以不用創建。 用vscode&#xff0c;所以這么選擇。

Spring Boot整合難點?AI一鍵生成全流程解決方案

在當今的軟件開發領域&#xff0c;Spring Boot 憑借其簡化開發流程、快速搭建項目的優勢&#xff0c;成為了眾多開發者的首選框架。然而&#xff0c;Spring Boot 的整合過程并非一帆風順&#xff0c;常常會遇到各種難點。而飛算 JavaAI 的出現&#xff0c;為解決這些問題提供了…

Python批量處理PDF圖片詳解(插入、壓縮、提取、替換、分頁、旋轉、刪除)

目錄 一、概述 二、 使用工具 三、Python 在 PDF 中插入圖片 3.1 插入圖片到現有PDF 3.2 插入圖片到新建PDF 3.3 批量插入多張圖片到PDF 四、Python 提取 PDF 圖片及其元數據 五、Python 替換 PDF 圖片 5.1 使用圖片替換圖片 5.2 使用文字替換圖片 六、Python 實現 …

山東大學軟件學院創新項目實訓開發日志(15)之中醫知識問答歷史對話查看bug處理后端信息響應成功但前端未獲取到

在開發中醫知識問答歷史對話查看功能的時候&#xff0c;出現了前后端信息獲取異同的問題&#xff0c;在經過非常非常非常艱難的查詢之后終于解決了這一問題&#xff0c;而這一問題的罪魁禍首就是后端沒有setter和getter方法&#xff01;&#xff01;&#xff01;&#xff01;&a…

Arkts應用全局UI狀態存儲和持久化V2(AppStorageV2、PersistenceV2和@Type)

目錄 應用全局UI狀態存儲和持久化V2版本 AppStorageV2 connect remove keys 示例 使用限制 PersistenceV2 connect remove keys save notifyOnError 示例 使用限制 Type 使用限制 應用全局UI狀態存儲和持久化V2版本 以下實例AppStorageV2、PersistenceV2和裝飾…

最大子序和問題——動態規劃/貪心算法解決

目錄 一&#xff1a;問題描述 二&#xff1a;解決思路1——動態規劃思想 三&#xff1a;C 語言代碼實現 四&#xff1a;復雜度分析 五&#xff1a;解決思路2——貪心算法思想 六&#xff1a;具體步驟 七: C語言代碼實現 八&#xff1a;復雜度分析 一&#xff1a;問題描述 …

【Python入門】文件讀取全攻略:5種常用格式(csv/excel/word/ppt/pdf)一鍵搞定 | 附完整代碼示例

大家好&#xff0c;我是唐叔&#xff01;今天給大家帶來一篇Python文件讀取的終極指南。無論是數據分析、辦公自動化還是爬蟲開發&#xff0c;文件讀取都是Python程序員必須掌握的核心技能。本文將詳細介紹Python處理5大常用文件格式的方法&#xff0c;包含完整可運行的代碼示例…

四、小白如何用Pygame制作一款跑酷類游戲(頁面暫停和主角跑步動作的實現)

四、小白如何用Pygame制作一款跑酷類游戲&#xff08;頁面暫停和主角跑步動作的實現&#xff09; 提示&#xff1a;寫完文章后&#xff0c;目錄可以自動生成&#xff0c;如何生成可參考右邊的幫助文檔 文章目錄 四、小白如何用Pygame制作一款跑酷類游戲&#xff08;頁面暫停和主…

《基于 RNN 的股票預測模型代碼優化:從重塑到直接可視化》

在深度學習領域&#xff0c;使用循環神經網絡&#xff08;RNN&#xff09;進行股票價格預測是一個常見且具有挑戰性的任務。本文將圍繞一段基于 RNN 的股票預測代碼的改動前后差別展開&#xff0c;深入剖析代碼的優化思路和效果。 原始代碼思路與問題 原始代碼實現了一個完整…

Lambda 函數與 peek 操作的使用案例

Lambda 函數和 peek 操作是 Java 8 Stream API 中非常有用的特性&#xff0c;下面我將介紹它們的使用案例。 Lambda 函數使用案例 Lambda 表達式是 Java 8 引入的一種簡潔的匿名函數表示方式。 集合操作 List<String> names Arrays.asList("Alice", "B…

Docker私有倉庫頁面訪問實現

通過 docker run -d -p 5000:5000 --name registry registry:2 命令搭建的Docker私有倉庫默認不提供網頁訪問界面。它是一個基于API的后端服務&#xff0c;主要用于鏡像的存儲和管理。但可以通過以下兩種方式實現網頁訪問&#xff1a; 一、通過第三方Web UI工具擴展 1. 使用 D…

[王陽明代數講義]語言模型核心代碼調研

語言模型核心代碼調研 基于Consciciteation?的才氣張量持續思考綜述將文本生成建模為才氣張量網絡擴散過程&#xff0c;實現非自回歸推理通過才氣張量的群-拓撲流形交叉注意力實現多模態推理&#xff0c;將輸入壓縮到低維空間持續迭代提出「條件計算提前終止」機制&#xff0c…

flink jobmanager離奇的heap oom

文章目錄 現象描述開始分析1.初步分析dump文件2.AI分析引用關系分析方向2.1 flink BlobServer bug分析方向2.2 和運行環境有關分析方向2.3 和任務有關 回到問題本身&#xff0c;思考一下1. seatunnel到底有沒有問題2.再次分析zipfile對象3.分析seatunnel es connector 源碼4 懷…

APP動態交互原型實例|墨刀變量控制+條件判斷教程

引言 不同行業的產品經理在繪制原型圖時&#xff0c;擁有不同的呈現方式。對于第三方軟件技術服務公司的產品經理來說&#xff0c;高保真動態交互原型不僅可以在開發前驗證交互邏輯&#xff0c;還能為甲方客戶帶來更直觀、真實的體驗。 本文第三部分將分享一個實戰案例&#…

AI 驅動下的后端開發架構革命:從智能協同體系

AI 驅動下的后端開發架構革命&#xff1a;從智能協同體系 一、引言&#xff1a;AI 重構后端開發范式 在 2025 年的企業級技術演進中&#xff0c;人工智能正從輔助工具升級為核心架構要素。根據 Gartner《2025 智能技術棧成熟度報告》&#xff0c;傳統 "人力編碼 硬規則…

安卓基礎(生命周期)

創建階段&#xff1a;onCreate方法被調用&#xff0c;用于初始化 Activity&#xff0c;如設置布局等。啟動階段&#xff1a;依次調用onStart和onResume方法&#xff0c;讓 Activity 變得可見并可與用戶交互。暫停與恢復階段&#xff1a;當 Activity 失去焦點但可見時&#xff0…

Uniapp: 下拉選擇框 ba-tree-picker

目錄 1、效果展示2、如何使用2.1 插件市場2.2 引入插件 3、參數配置3.1 屬性3.2 方法 4、遇見的問題4.1、設置下拉樹的樣式 1、效果展示 2、如何使用 2.1 插件市場 首先從插件市場中將插件導入到項目中 2.2 引入插件 在使用的頁面引入插件 <view click"showPicke…

Spring Boot實戰:基于策略模式+代理模式手寫冪等性注解組件

一、為什么需要冪等性&#xff1f; 核心定義&#xff1a;在分布式系統中&#xff0c;一個操作無論執行一次還是多次&#xff0c;最終結果都保持一致。 典型場景&#xff1a; 用戶重復點擊提交按鈕網絡抖動導致的請求重試消息隊列的重復消費支付系統的回調通知 不處理冪等的風…