C++?opencv圖像處理實(shí)現(xiàn)圖片邊緣檢測(cè)示例
邊緣檢測(cè)簡(jiǎn)介
邊緣檢測(cè)是圖像處理和計(jì)算機(jī)視覺(jué)中的基本問(wèn)題,邊緣檢測(cè)的目的是標(biāo)識(shí)數(shù)字圖像中亮度變化明顯的點(diǎn)。
圖像邊緣檢測(cè)大幅度地減少了數(shù)據(jù)量,并且剔除量不相關(guān)的信息,保留了圖像重要的結(jié)構(gòu)屬性。
一、邊緣檢測(cè)步驟
1.圖像獲取
2.圖像濾波
3.圖像增強(qiáng)
4.圖像檢測(cè)
5.圖像定位
二、Canny
1.函數(shù)
void Canny(InputArray image, OutputArray edges, double threshold1, double threshold2, int apertureSize = 3, bool L2gradient = false); image 8位輸入圖像 edges 單通道8位圖像 threshold1 遲滯過(guò)程第一個(gè)閾值 threshold2 遲滯過(guò)程第二個(gè)閾值 apertureSize 算子的孔徑大小 L2gradient 范數(shù)
2.代碼
#include<iostream>
#include<opencv.hpp>
using namespace std;
using namespace cv;
int main()
{
Mat img1;
img1 = imread("圖片1.png", 0);
imshow("原圖", img1);
Canny(img1, img1,10, 10);
imshow("Canny", img1);
waitKey(0);
}
效果如下:

二、Sobel
1.函數(shù)
void Sobel(InputArray src, OutputArray dst, int ddepth, int dx, int dy, int ksize = 3, double scale = 1, double delta = 0, int borderType = BORDER_DEFAULT); src 輸入 dst 輸出 ddepth 輸出圖像的數(shù)據(jù)類型 dx x方向的差分階數(shù) dy y方向的差分階數(shù) Ksize 尺寸 1,3,5,7 scale 縮放因子 delta 偏值 borderType 邊界像素模式
2.代碼
int main()
{
Mat img1, img2;
img1 = imread("圖片1.png", 0);
imshow("原圖", img1);
Sobel(img1, img2, CV_8U, 2,0,1);
imshow("sobel", img2);
waitKey(0);
}
效果如下:

三、Scharr
1.函數(shù)
void Scharr(InputArray src, OutputArray dst, int ddepth, int dx, int dy, double scale = 1, double delta = 0, int borderType = BORDER_DEFAULT); src 輸入 dst 輸出 ddepth 輸出圖像的數(shù)據(jù)類型 dx x方向的導(dǎo)數(shù) dy y方向的導(dǎo)數(shù) scale 縮放因子 delta 偏值 borderType 邊界像素模式
2.代碼
int main()
{
Mat img1, img2;
img1 = imread("圖片1.png", 0);
imshow("原圖", img1);
Scharr(img1, img2, CV_8U, 1, 0);
imshow("Scharr", img2);
waitKey(0);
}
效果如下:

四、Laplacian
1.函數(shù)
void Laplacian(InputArray src, OutputArray dst, int ddepth, int ksize = 1, double scale = 1, double delta = 0, int borderType = BORDER_DEFAULT); src 輸入 dst 輸出 ddepth 輸出圖像的數(shù)據(jù)類型 Ksize 濾波器大小 正奇數(shù) scale 縮放因子 delta 偏值 borderType 邊界像素模式
2.代碼
int main()
{
Mat img1, img2;
img1 = imread("圖片1.png", 0);
imshow("原圖", img1);
Laplacian(img1, img2,CV_8U,1);
imshow("Laplacian", img2);
waitKey(0);
}
效果如下:

總結(jié)
本文只是簡(jiǎn)單介紹了幾種常用的邊緣檢測(cè)算法函數(shù),都是調(diào)用函數(shù)解決問(wèn)題,大家可以更加深入的研究數(shù)學(xué)方式的邊緣檢測(cè)算法,更多關(guān)于C++ opencv圖片邊緣檢測(cè)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
kernel利用pt?regs劫持seq?operations的遷移過(guò)程詳解
這篇文章主要為大家介紹了kernel利用pt_regs劫持seq_operations進(jìn)行遷移的過(guò)程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05
C語(yǔ)言利用goto語(yǔ)句設(shè)計(jì)實(shí)現(xiàn)一個(gè)關(guān)機(jī)程序
今天給大家分享一個(gè)非常有趣的知識(shí)——用goto語(yǔ)句編寫(xiě)一個(gè)關(guān)機(jī)小程序。主要用到了shutdown命令語(yǔ)句、goto語(yǔ)句、strcmp函數(shù)等知識(shí)點(diǎn),感興趣的可以了解一下2023-01-01
C++ Easylogging++日志庫(kù)配置使用超詳細(xì)講解
這篇文章主要介紹了C++ Easylogging++日志庫(kù)配置使用,Easylogging++是用于C++應(yīng)用程序的單頭高效日志庫(kù)。它非常強(qiáng)大,高度可擴(kuò)展并且可以根據(jù)用戶的要求進(jìn)行配置2022-11-11
C++使用OpenCV進(jìn)行物體識(shí)別與檢測(cè)的三種方法
物體識(shí)別與檢測(cè)是計(jì)算機(jī)視覺(jué)中的核心任務(wù)之一,它被廣泛應(yīng)用于自動(dòng)駕駛、安防監(jiān)控、圖像分析等領(lǐng)域,通過(guò)物體檢測(cè)技術(shù),計(jì)算機(jī)能夠從圖像中識(shí)別出特定的物體或目標(biāo),本文將介紹如何使用 C++ 和 OpenCV 庫(kù)進(jìn)行物體識(shí)別與檢測(cè),需要的朋友可以參考下2025-04-04
關(guān)于STL中l(wèi)ist容器的一些總結(jié)
list就是數(shù)據(jù)結(jié)構(gòu)中的雙向鏈表(根據(jù)sgi stl源代碼),因此它的內(nèi)存空間是不連續(xù)的,通過(guò)指針來(lái)進(jìn)行數(shù)據(jù)的訪問(wèn),這個(gè)特點(diǎn)使得它的隨即存取變的非常沒(méi)有效率,因此它沒(méi)有提供[]操作符的重載2013-09-09
C語(yǔ)言?使用qsort函數(shù)來(lái)進(jìn)行快速排序
排序方法有很多種:選擇排序,冒泡排序,歸并排序,快速排序等。?看名字都知道快速排序是目前公認(rèn)的一種比較好的排序算法。因?yàn)樗俣群芸?,所以系統(tǒng)也在庫(kù)里實(shí)現(xiàn)這個(gè)算法,便于我們的使用。?這就是qsort函數(shù)2022-02-02

