OpenCV 圖形API(61)圖像特征檢測------檢測圖像邊緣的函數Canny()

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

算法描述

使用Canny算法在圖像中查找邊緣。

該函數在輸入圖像中查找邊緣,并使用Canny算法在輸出映射(edges)中標記它們。在邊緣連接過程中,會使用threshold1和threshold2之間的較小值。而較大值則用于找到強烈邊緣的初始段。詳情請參見:Canny邊緣檢測器

cv::gapi::Canny 是 OpenCV 的 G-API 模塊中用于檢測圖像邊緣的函數。G-API 是 OpenCV 中的一個模塊,它提供了一種新的方式來處理圖像和視頻流,通過定義圖形操作然后在不同的后端上執行它們。

注意:
函數文本ID為"org.opencv.imgproc.feature.canny"

函數原型

GMat cv::gapi::Canny
(const GMat &  	image,double  	threshold1,double  	threshold2,int  	apertureSize = 3,bool  	L2gradient = false 
) 		

參數

  • 參數 image: 8位輸入圖像。
  • 參數 threshold1: 滯后閾值法的第一個閾值。
  • 參數 threshold2: 滯后閾值法的第二個閾值。
  • 參數 apertureSize: 用于Sobel算子的孔徑大小。
  • 參數 L2gradient: 一個標志,指示是否應該使用更精確的L2范數 n o r m = ( d I / d x ) 2 + ( d I / d y ) 2 norm=\sqrt{(dI/dx)^2 + (dI/dy)^2} norm=(dI/dx)2+(dI/dy)2 ?

?來計算圖像梯度幅度(當L2gradient=true時),或者默認的L1范數=|dI/dx|+|dI/dy|是否足夠(當L2gradient=false時)。

代碼示例

#include <opencv2/opencv.hpp>
#include <opencv2/gapi.hpp>
#include <opencv2/gapi/core.hpp> // 包含核心功能
#include <opencv2/gapi/imgproc.hpp> // 包含圖像處理功能int main() {// 讀取輸入圖像cv::Mat bgr_img = cv::imread("/media/dingxin/data/study/OpenCV/sources/images/Lenna.png");if (bgr_img.empty()) {std::cerr << "Error: Image not found!" << std::endl;return -1;}// 將BGR圖像轉換為灰度圖像cv::Mat gray_img;cv::cvtColor(bgr_img, gray_img, cv::COLOR_BGR2GRAY);// 定義G-API圖cv::GMat in;auto edges = cv::gapi::Canny(in, 50, 150, 3, false); cv::GComputation comp(cv::GIn(in), cv::GOut(edges));// 創建輸出矩陣cv::Mat out_edges;// 應用計算圖并執行邊緣檢測comp.apply(cv::gin(gray_img), cv::gout(out_edges),cv::compile_args(cv::gapi::kernels()));// 顯示原始圖像和邊緣檢測結果cv::imshow("Original Image", bgr_img);cv::imshow("Edges Detected", out_edges);cv::waitKey(0); // 等待按鍵return 0;
}

運行結果

在這里插入圖片描述

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

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

相關文章

ubantu中下載編譯安裝qt5.15.3

操作步驟如下&#xff1a; 克隆 Qt 倉庫&#xff1a; git clone https://code.qt.io/qt/qt5.git cd qt5 切換到 Qt 5.15.3 標簽&#xff1a; git checkout v5.15.3-lts-lgpl 初始化子模塊&#xff1a; perl init-repository 配置和編譯 Qt&#xff1a; ./configure -prefix $H…

畢業論文設計基本內容和要求:

畢業設計基本內容和要求&#xff1a; 研究內容 調查了解LAMP架構和PHP開發&#xff1b; 學習百度旅游調用的其他產品線服務并熟悉請求接口&#xff1b; 學習社區業務層規范&#xff1b; 設計并實現旅游主要模塊&#xff1b; 技術指標 熟悉企業中流程運轉的方式&#xff0c;…

【大語言模型】大語言模型(LLMs)在工業缺陷檢測領域的應用

大語言模型&#xff08;LLMs&#xff09;在工業缺陷檢測領域的應用場景正在快速擴展&#xff0c;結合其多模態理解、文本生成和邏輯推理能力&#xff0c;為傳統檢測方法提供了新的技術路徑。以下是該領域的主要應用場景及相關技術進展&#xff1a; 1. 多模態缺陷檢測與解釋 視…

【AI插件開發】Notepad++ AI插件開發1.0發布和使用說明

一、產品簡介 AiCoder是一款為Notepad設計的輕量級AI輔助插件&#xff0c;提供以下核心功能&#xff1a; 嵌入式提問&#xff1a;對選中的文本內容進行AI分析&#xff0c;通過側邊欄聊天界面與AI交互&#xff0c;實現多輪對話、問題解答或代碼生成。對話式提問&#xff1a;獨…

第2講:R語言中的色彩美學——科研圖表配色指南

目錄 一、背景導引:科研圖表為何需要“配色講究”? 二、色彩基礎認知:別讓“紅綠盲”錯過你的科研成果 三、R語言中的配色庫全景圖 四、案例演示與代碼實戰 ??案例1:ggplot2 + viridis 配色的熱圖 ??案例2:MetBrewer 中的印象派色彩 五、技巧點撥:如何為SCI圖…

基于Django的個性化股票交易管理系統

本項目基于Python3.6、Django2.1、MySql8.0&#xff08;最好不要使用5.6&#xff0c;字符集等方面均不兼容&#xff0c;否則導入數據庫會出錯&#xff09;與股票信息工具包TuShare實現。 創建或激活對應Python開發環境 這里使用了conda來管理環境&#xff0c;強烈推薦&#xf…

超越GPT-4?下一代大模型的技術突破與挑戰

超越GPT-4&#xff1f;下一代大模型的技術突破與挑戰 引言&#xff1a;大模型的演進歷程 人工智能領域近年來最引人注目的發展莫過于大型語言模型(Large Language Models, LLMs)的快速進步。從GPT-3到GPT-4&#xff0c;再到如今各種宣稱"超越GPT-4"的模型不斷涌現&…

Js 之點擊下拉搜索Ajax-Bootstrap-Select

一、效果圖 二、文檔 https://gitcode.com/gh_mirrors/aj/Ajax-Bootstrap-Select/tree/master 三、示例代碼 引入插件js、css <link rel"stylesheet" href"{php echo MODULE_URL}template/lib/bootstrap-select/css/bootstrap-select.min.css"> <…

無線監控系統分類全解析:搭配視頻融合平臺EasyCVR開啟高效監控

隨著技術的發展&#xff0c;無線監控系統在家庭、小型企業、特定行業以及室外惡劣環境中的應用越來越廣泛。本文將介紹幾種常見的無線監控系統&#xff0c;分析其優缺點&#xff0c;并結合EasyCVR視頻融合平臺的功能&#xff0c;探討如何優化無線監控系統的性能和應用。 一、主…

WebRTC服務器Coturn服務器中的通信協議

1、概述 作為WebRTC服務器&#xff0c;coturn通信協議主要是STUN和TURN協議 STUN&TURN協議頭部都是20個字節,用 Message Type來區分不同的協議 |------2------|------2------|------------4------------|------------------------12-------------------------|-----------…

Vue Transition 組件詳解:讓元素動起來

文章目錄 一、為什么需要 Transition 組件&#xff1f;二、核心工作原理三、基礎用法&#xff1a;6個過渡類名四、進階用法五、 JavaScript 鉤子函數六、過渡模式&#xff08;Mode&#xff09;七、列表過渡&#xff08;TransitionGroup&#xff09;八、與第三方動畫庫結合&…

【Redis】有序集合類型Sortedset 常用命令詳解

此類型和 set 一樣也是 string 類型元素的集合&#xff0c;且不允許重復的元素 不同的是每個元素都會關聯一個double類型的分數&#xff0c;redis正是通過分數來為集合中的成員進行從小到大的排序 有序集合的成員是唯一&#xff0c;但分數(score)卻可以重復 1. zadd - 添加 語法…

微信小程序 van-dropdown-menu

點擊其他按鈕&#xff0c;關閉van-dropdown-menu下拉框 DropdownMenu 引入頁面使用index.wxmlindex.scssindex.ts(重點)index.ts(全部) DropdownMenu 引入 在app.json或index.json中引入組件 "usingComponents": {"van-dropdown-menu": "vant/weapp…

C 語言內存分配方法及優缺點

在 C 語言開發中&#xff0c;內存分配的方式主要有三種&#xff1a;靜態內存分配、棧內存分配和堆內存分配。每種分配方式都有其獨特的特點、適用場景以及優缺點。 靜態內存分配 靜態內存分配是在編譯時就確定好內存的分配&#xff0c;它主要用于定義全局變量和靜態局部變量。…

第二大腦-個人知識庫

原文鏈接:https://i68.ltd/notes/posts/20250407-llm-person-kb/ Quivr-第二大腦一樣的個人助手&#xff0c;利用AI技術增強個人生產力 將 GenAI 集成到您的應用程序中的個性化 RAG,專注于您的產品而非 RAG項目倉庫:https://github.com/QuivrHQ/quivr Star:37.7k官網:https:/…

A. Ambitious Kid

time limit per test 1 second memory limit per test 256 megabytes Chaneka, Pak Chaneks child, is an ambitious kid, so Pak Chanek gives her the following problem to test her ambition. Given an array of integers [A1,A2,A3,…,AN][A1,A2,A3,…,AN]. In one o…

SQL進階知識:八、性能調優

今天介紹下關于性能調優的詳細介紹&#xff0c;并結合MySQL數據庫提供實際例子。 性能調優是數據庫管理中的一個重要環節&#xff0c;尤其是在處理高并發和大數據量的應用場景時。MySQL提供了多種工具和方法來優化數據庫性能。以下是關于MySQL性能調優的詳細介紹&#xff0c;以…

NVLink、UALink 崛起,PCIe Gen6 如何用 PAM4 迎戰未來?

現在數字經濟發展地相當快速&#xff0c;像Cloud、現在火紅的AI、大數據這些新技術都需要在數據中心里運行更多運算&#xff0c;伴隨而來的是更快的數據傳輸速度的需求。 在數據中心&#xff0c;有很多條數據傳輸路徑&#xff0c;舉例 &#xff1a; Server 和Storage之間&…

Jenkins流水線管理工具

文章目錄 前言&#xff1a; DevOps時代的自動化核心 —Jenkins一、Jenkins是什么&#xff1f;二、Linux安裝Jenkinswar包方式安裝依賴環境下載 Jenkins WAR 包啟動 Jenkins 服務啟動日志驗證配置插件鏡像源 docker鏡像方式安裝依賴環境拉取 Jenkins 鏡像運行 Jenkins 容器獲取初…

Spring @Transactional 自調用問題深度解析

Spring Transactional 自調用問題深度解析 問題本質&#xff1a;自調用事務失效 當類內部的方法A調用同一個類的另一個帶有Transactional注解的方法B時&#xff0c;事務注解不會生效。這是因為Spring的事務管理是基于AOP代理實現的&#xff0c;而自調用會繞過代理機制。 原理…