亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

OpenCV實現Sobel邊緣檢測的示例

 更新時間:2022年08月03日 15:27:29   作者:點云俠  
本文主要介紹了OpenCV實現Sobel邊緣檢測的示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

一、Sobel算法

1、算法概述

Sobel邊緣檢測算法比較簡單,實際應用中效率比canny邊緣檢測效率要高,但是邊緣不如Canny檢測的準確,然而在很多實際應用的場合,sobel邊緣卻是首選,Sobel算子是高斯平滑與微分操作的結合體,所以其抗噪聲能力很強,用途較多。尤其是在對效率要求較高,而對細紋理不太關系的時候。

使用Sobel算子提取圖像邊緣分3個步驟:

提取X方向的邊緣,X方向一階Sobel邊緣檢測算法為:

提取Y方向的邊緣,Y方向一階Sobel邊緣檢測算法為:

綜合兩個方向的邊緣信息得到整幅圖像的邊緣。

2、主要函數

Sobel_x_or_y = cv2.Sobel(src, ddepth, dx, dy, dst, ksize, scale, delta, borderType)
  • src:傳入的圖像
  • ddepth:圖像的深度
  • dx、dy:指的是求導的階數,0表示這個方向上沒有求導,所填的數一般為0、1、2。
  • ksize:是Sobel算子的大小,即卷積核的大小,必須為奇數1、3、5、7。如果ksize=-1,就演變成為3x3的Scharr算子,scale是縮放導數的比例常數,默認情況為沒有伸縮系數。
  • borderType:是判斷圖像邊界的模式,這個參數默認值為cv2.BORDER_DEFAULT。
  • dstdst之后的參數都是可選參數。

二、C++代碼

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

using namespace cv;
using namespace std;

int main()
{
	//----------------讀取圖像-----------------
	Mat img = imread("1.jpg");
	//黑白圖像邊緣檢測結果較為明顯
	Mat gray_img;
	cvtColor(img, gray_img, COLOR_BGR2GRAY);
	Mat resultX, resultY, resultXY;
	//-------------Sobel邊緣檢測--------------
	//X方向一階邊緣
	Sobel(img, resultX, CV_16S, 2, 0, 1);
	convertScaleAbs(resultX, resultX);

	//Y方向一階邊緣
	Sobel(img, resultY, CV_16S, 0, 1, 3);
	convertScaleAbs(resultY, resultY);

	//整幅圖像的一階邊緣
	resultXY = resultX + resultY;

	//顯示圖像
	imshow("resultX", resultX);
	imshow("resultY", resultY);
	imshow("resultXY", resultXY);
	waitKey(0);
	return 0;
}

三、python代碼

import cv2

img = cv2.imread("1.jpg")
gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

# -------------------Sobel邊緣檢測------------------------
x = cv2.Sobel(gray_img, cv2.CV_16S, 1, 0)
y = cv2.Sobel(gray_img, cv2.CV_16S, 0, 1)
# cv2.convertScaleAbs(src[, dst[, alpha[, beta]]])
# 可選參數alpha是伸縮系數,beta是加到結果上的一個值,結果返回uint類型的圖像
Scale_absX = cv2.convertScaleAbs(x)  # convert 轉換  scale 縮放
Scale_absY = cv2.convertScaleAbs(y)
result = cv2.addWeighted(Scale_absX, 0.5, Scale_absY, 0.5, 0)
# ----------------------顯示結果----------------------------
cv2.imshow('img', gray_img)
cv2.imshow('Scale_absX', Scale_absX)
cv2.imshow('Scale_absY', Scale_absY)
cv2.imshow('result', result)
cv2.waitKey(0)
cv2.destroyAllWindows()

四、結果展示

1、灰度圖

2、X方向一階邊緣

2、Y方向一階邊緣

3、整幅圖像的一階邊緣

五、相關鏈接

[1] python+OpenCV圖像處理(八)邊緣檢測

到此這篇關于OpenCV實現Sobel邊緣檢測的示例的文章就介紹到這了,更多相關OpenCV Sobel邊緣檢測內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • C語言實現楊輝三角實例

    C語言實現楊輝三角實例

    這篇文章主要介紹了C語言實現楊輝三角的方法,主要通過數組簡單實現,具有一定的參考借鑒價值,需要的朋友可以參考下
    2014-09-09
  • C++選擇排序算法實例

    C++選擇排序算法實例

    這篇文章主要介紹了C++選擇排序算法實例,本文先是介紹了什么是選擇排序,然后給出了實現代碼,需要的朋友可以參考下
    2014-10-10
  • C語言算法練習之數組元素排序

    C語言算法練習之數組元素排序

    這篇文章主要為大家介紹了C語言算法練習中數組元素排序的實現方法,文中的示例代碼講解詳細,對我們學習C語言有一定幫助,需要的可以參考一下
    2022-09-09
  • 基于C語言實現隨機點名器(附源碼)

    基于C語言實現隨機點名器(附源碼)

    這篇文章主要為大家詳細介紹如何基于C語言實現一個簡單的隨機點名器,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起動手嘗試一下
    2022-07-07
  • C++ map的簡單使用實現

    C++ map的簡單使用實現

    map是STL的一個關聯容器,它以<key,value>一對一的形式存儲,且map的內部自建一個紅黑樹,使得其可以自動排序,本文就介紹一下C++ map的簡單使用,感興趣的可以了解一下
    2021-05-05
  • Redis的新特性懶惰刪除Lazy Free詳解

    Redis的新特性懶惰刪除Lazy Free詳解

    這篇文章主要介紹了Redis的新特性懶惰刪除Lazy Free詳解,Redis4.0新增了非常實用的lazy free特性,從根本上解決Big Key(主要指定元素較多集合類型Key)刪除的風險,需要的朋友可以參考下
    2019-06-06
  • 淺析C++函數模板和類模板

    淺析C++函數模板和類模板

    C++語言的模板技術包括函數模板和類模板,模板技術是一種代碼重用技術,函數和類是C++語言中兩種主要的重用代碼形式,這篇文章主要介紹了C++函數模板和類模板,需要的朋友可以參考下
    2022-07-07
  • Qt使用事件與定時器實現字幕滾動效果

    Qt使用事件與定時器實現字幕滾動效果

    我們經常能夠在外面看到那種滾動字幕,那么本文就拿Qt來做一個吧,本文將使用事件與定時器實現字幕滾動的效果,感興趣的小伙伴可以了解一下
    2023-06-06
  • 利用QT實現圖片瀏覽器的示例詳解

    利用QT實現圖片瀏覽器的示例詳解

    這篇文章主要和大家分享一個小案例:利用QT制作一個小的圖片瀏覽器,要求可以顯示jpg、jpeg、png、bmp,還可以從電腦上拖動圖到窗口并顯示出來,感興趣的可以了解一下
    2023-02-02
  • Qt實現模糊匹配功能的實例詳解

    Qt實現模糊匹配功能的實例詳解

    對于瀏覽器的使用,我想大家一定不會陌生吧,輸入要搜索的內容時,會出現相應的匹配信息。本文就來用Qt實現模糊匹配功能,感興趣的可以了解一下
    2022-10-10

最新評論