国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【C++】【Opencv】cv::Canny()邊緣檢測函數(shù)詳解和示例

這篇具有很好參考價(jià)值的文章主要介紹了【C++】【Opencv】cv::Canny()邊緣檢測函數(shù)詳解和示例。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

Canny邊緣檢測是一種流行的邊緣檢測算法,由John F. Canny在1986年開發(fā)。它是一種多階段過程,包括噪聲濾波、計(jì)算圖像強(qiáng)度的梯度、非最大值抑制以及雙閾值檢測。本文通過函數(shù)原型解讀和示例對(duì)cv::Canny()函數(shù)進(jìn)行詳解,以幫助大家理解和使用。

原理

Canny邊緣檢測的步驟如下:

(1)高斯濾波(噪聲濾波):使用高斯濾波器平滑圖像以減少噪聲。高斯濾波器是一種線性濾波器,可以消除圖像中的高頻噪聲。
(2)計(jì)算梯度強(qiáng)度和方向:計(jì)算圖像中每個(gè)像素的梯度強(qiáng)度和方向。梯度強(qiáng)度表示像素點(diǎn)處的邊緣強(qiáng)度,而梯度方向表示邊緣的方向。
(3)非最大值抑制:在計(jì)算梯度強(qiáng)度和方向后,非最大值抑制將抑制那些不是局部最大值的像素點(diǎn)。這意味著只有局部最大值的像素點(diǎn)才會(huì)被保留下來。
(4)雙閾值檢測:最后,雙閾值檢測用于檢測邊緣。這需要兩個(gè)閾值,通常稱為低閾值和高閾值。如果像素的梯度強(qiáng)度大于高閾值,則該像素被視為邊緣;如果像素的梯度強(qiáng)度在兩個(gè)閾值之間,則該像素被視為邊緣候選;如果像素的梯度強(qiáng)度低于低閾值,則該像素被視為非邊緣。

函數(shù)介紹

void cv::Canny(InputArray image, OutputArray edges, double lowThreshold, double highThreshold, int apertureSize = 3);

參數(shù)解釋:

image:輸入圖像,應(yīng)該是灰度圖像。
edges:輸出圖像,即檢測到的邊緣圖像。
lowThreshold:低閾值,用于雙閾值檢測。
highThreshold:高閾值,用于雙閾值檢測。
apertureSize:指定Sobel算子的大小,默認(rèn)為3。

運(yùn)行示例

設(shè)置閾值分別為50和150。
代碼如下:

#include <opencv2/opencv.hpp>
#include <iostream>

using namespace cv;
using namespace std;

int main() {
    Mat image = imread("ceshi.jpg", IMREAD_COLOR); // 讀取輸入圖像
    if (image.empty()) {
        cout << "Failed to read image." << endl;
        return -1;
    }
    Mat gray_image; cvtColor(image, gray_image, COLOR_BGR2GRAY); // 轉(zhuǎn)換為灰度圖像
    Mat edges_image;

    // 應(yīng)用Canny邊緣檢測算法
    Canny(gray_image, edges_image, 50, 150);

    // 顯示結(jié)果圖像
    imshow("Input", image);
    imshow("Edges", edges_image);
    imwrite("cnany.jpg", edges_image);
    waitKey(0);
    return 0;
}

在上面的示例中,我們首先讀取輸入圖像并將其轉(zhuǎn)換為灰度圖像。然后,我們使用Canny函數(shù)應(yīng)用Canny邊緣檢測算法,并指定兩個(gè)閾值(低閾值和高閾值)。最后,我們顯示原始圖像和檢測到的邊緣圖像。圖像對(duì)比如下所示。

cv::canny,C、C++日常記錄,opencv,c++,計(jì)算機(jī)視覺,人工智能
上面為原圖,下面為邊緣檢測效果圖。
cv::canny,C、C++日常記錄,opencv,c++,計(jì)算機(jī)視覺,人工智能

小結(jié)

選擇使用Canny函數(shù)進(jìn)行邊緣計(jì)算時(shí),應(yīng)根據(jù)項(xiàng)目需求和場景,設(shè)置合適的低閾值和高閾值參數(shù),以獲得最佳的邊緣檢測結(jié)果。較低的閾值可能會(huì)導(dǎo)致更多的邊緣被檢測到,而較高的閾值可能會(huì)導(dǎo)致較少的邊緣被檢測到。因此,選擇適當(dāng)?shù)拈撝凳鞘褂肅anny邊緣檢測函數(shù)的關(guān)鍵之一。文章來源地址http://www.zghlxwxcb.cn/news/detail-767408.html

到了這里,關(guān)于【C++】【Opencv】cv::Canny()邊緣檢測函數(shù)詳解和示例的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • OpenCV——Canny邊緣檢測算法

    OpenCV——Canny邊緣檢測算法

    圖像分割是將數(shù)字圖像細(xì)分為多個(gè)子區(qū)域的過程,在計(jì)算機(jī)視覺/機(jī)器視覺領(lǐng)域被廣泛應(yīng)用。它的目的是簡化或改變圖像的表示形式,以便更容易理解和分析。常見的圖像分割方法包括閾值處理、聚類法、邊緣檢測和區(qū)域生長等。解決圖像分割問題通常需要結(jié)合領(lǐng)域知識(shí),以提

    2024年04月17日
    瀏覽(27)
  • 【OpenCV】第十章: Canny邊緣檢測

    【OpenCV】第十章: Canny邊緣檢測

    第十章: Canny邊緣檢測 canny邊緣檢測是一種一階微分算子檢測算法,但為什么還要單獨(dú)拿出來講呢,因?yàn)樗鼛缀跏沁吘墮z測算子中最優(yōu)秀的邊緣檢測算子,你很難找到一種邊緣檢測算子能顯著地比Canny算子做的更好。 Canny提出了邊緣檢測算子優(yōu)劣評(píng)判的三條標(biāo)準(zhǔn): 1、較高的檢

    2024年02月03日
    瀏覽(21)
  • opencv-Canny 邊緣檢測

    opencv-Canny 邊緣檢測

    Canny邊緣檢測是一種經(jīng)典的圖像邊緣檢測算法,它在圖像中找到強(qiáng)度梯度的變化,從而 識(shí)別出圖像中的邊緣 。 Canny邊緣檢測的優(yōu)點(diǎn)包括高靈敏度和低誤檢率。 在OpenCV中, cv2.Canny() 函數(shù)用于執(zhí)行Canny邊緣檢測。 基本語法如下: 參數(shù)說明: image : 輸入圖像,通常為灰度圖像。

    2024年02月22日
    瀏覽(26)
  • 【OpenCV實(shí)現(xiàn)圖像梯度,Canny邊緣檢測】

    【OpenCV實(shí)現(xiàn)圖像梯度,Canny邊緣檢測】

    OpenCV中,可以使用各種函數(shù)實(shí)現(xiàn)圖像梯度和Canny邊緣檢測,這些操作對(duì)于圖像處理和分析非常重要。 圖像梯度通常用于尋找圖像中的邊緣和輪廓。在OpenCV中,可以使用cv2.Sobel()函數(shù)計(jì)算圖像的梯度,該函數(shù)可以計(jì)算圖像在水平和垂直方向上的梯度。梯度的方向和大小可以幫助

    2024年02月07日
    瀏覽(20)
  • Python Opencv實(shí)踐 - Canny邊緣檢測
  • opencv(七)Canny邊緣檢測和圖像輪廓檢測

    opencv(七)Canny邊緣檢測和圖像輪廓檢測

    提示:文章寫完后,目錄可以自動(dòng)生成,如何生成可參考右邊的幫助文檔 1、檢測步驟 1)使用高斯濾波器,以平滑圖像,濾掉噪聲。 2)計(jì)算圖像中每個(gè)像素點(diǎn)的梯度強(qiáng)度和方向 3)應(yīng)用非極大值(Non-Maximum Suppression)抑制,以消除邊緣檢測帶來的雜散響應(yīng) 4)應(yīng)用雙閾值(

    2024年02月04日
    瀏覽(19)
  • OpenCV自學(xué)筆記十四:Canny邊緣檢測

    Canny邊緣檢測是一種經(jīng)典的圖像邊緣檢測算法,具有以下幾個(gè)步驟: 1. 噪聲抑制:首先對(duì)圖像進(jìn)行平滑處理,以去除圖像中的噪聲。常用的方法是應(yīng)用高斯濾波器。 2. 計(jì)算梯度:通過對(duì)平滑后的圖像應(yīng)用Sobel算子(或其他梯度算子),計(jì)算圖像的梯度幅值和梯度方向。梯度表

    2024年02月08日
    瀏覽(20)
  • OpenCV 筆記(12):常用的邊緣檢測算子—— Canny

    OpenCV 筆記(12):常用的邊緣檢測算子—— Canny

    一階導(dǎo)數(shù)、二階導(dǎo)數(shù)的邊緣算子雖然簡單易用,但存在一些缺點(diǎn)。例如容易受噪聲影響,容易產(chǎn)生虛假邊緣。 John F. Canny 在 1986 年提出了 Canny 邊緣檢測算法。它是結(jié)合了梯度計(jì)算方法和非極大值抑制技術(shù)的一種邊緣檢測算法。該算法克服了之前的邊緣檢測算法在抑制噪聲和保

    2024年02月03日
    瀏覽(19)
  • OpenCV 入門教程:Laplacian算子和Canny邊緣檢測

    邊緣檢測在圖像處理和計(jì)算機(jī)視覺領(lǐng)域中起著重要的作用。 Laplacian 算子和 Canny 邊緣檢測是兩種常用的邊緣檢測方法,它們能夠幫助我們準(zhǔn)確地檢測圖像中的邊緣信息。 OpenCV 提供了這

    2024年02月13日
    瀏覽(21)
  • 使用c++視覺處理----canny 邊緣檢測、sobel邊緣檢測、scharr 濾波邊緣檢測

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包