色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          "); //-->

          博客專欄

          EEPW首頁 > 博客 > 迅為RK3568開發(fā)板Scharr濾波器算子邊緣檢測

          迅為RK3568開發(fā)板Scharr濾波器算子邊緣檢測

          發(fā)布人:紅李亞 時間:2023-10-09 來源:工程師 發(fā)布文章
          本小節(jié)代碼在配套資料“iTOP-3568 開發(fā)板\03_【iTOP-RK3568 開發(fā)板】指南教程\04_OpenCV 開發(fā)配套資料\33”目錄下,如下圖所示:

          在 Sobel 算子算法函數(shù)中,如果設(shè)置 ksize=-1 就會使用 3x3 的 Scharr 濾波器。Scharr 算子是 Soble 算子在 ksize=3 時的優(yōu)化,與 Soble 的速度相同,且精度更高。Scharr 算子與 Sobel

          算子的不同點是在平滑部分,其中心元素占的權(quán)重更重,相當(dāng)于使用較小標(biāo)準(zhǔn)差的高斯函數(shù),也就是更瘦高的模板。

          Scharr 算子的卷積核為:

          cv2.Scharr 函數(shù)功能:

          使用 Scharr 算子進行邊緣檢測。

          函數(shù)原型:

          dst = cv2.Scharr(src, ddepth, dx, dy[, dst[, scale[, delta[, borderType]]]])

          參數(shù)定義:

          dst 代表目標(biāo)圖像。

          src 代表原始圖像。

          ddepth 代表輸出圖像的深度。

          dx 代表 x 方向上的求導(dǎo)階數(shù)。

          dy 代表 y 方向上的求導(dǎo)階數(shù)。

          scale 代表計算導(dǎo)數(shù)值時所采用的縮放因子,默認(rèn)情況下該值是 1,是沒有縮放的。

          delta 代表加在目標(biāo)圖像 dst 上的值,該值是可選的,默認(rèn)為 0。

          borderType 代表邊界樣式。

          實驗:

          實驗要求:

          使用 cv2.Scharr 函數(shù),分別對 x 軸和 y 軸進行邊緣檢測,隨后使用 cv2.addWeighted 函數(shù)以 0.5:0.5 的比例將兩個圖像進行融合,最后使用 cv2.imshow()函數(shù)對原圖和邊緣檢測的三個圖像進行展示

          實驗步驟:

          首先進入到 ubuntu 的終端界面將“iTOP-3568 開發(fā)板\03_【iTOP-RK3568 開發(fā)板】指南教程\04_OpenCV 開發(fā)配套資料\33”路徑下的 number.png 拷貝到 ubuntu 虛擬機上,拷貝完成如

          下圖所示:

          然后來到 ubuntu 虛擬機的終端界面,輸入以下命令來創(chuàng)建 demo33_Scharr.py 文件,如下圖所示:

          vim demo33_Scharr.py

          然后向該文件中添加以下內(nèi)容:

          1 import cv2 #opencv 的縮寫為 cv2,導(dǎo)入 opencv
          2 img = cv2.imread('number.png',1) #flags 參數(shù)為 1,返回彩色圖像
          3 cv2.imshow('原圖',img)#通過 cv2.imshow()函數(shù)展示原圖
          4 scharrx = cv2.Scharr(img,cv2.CV_64F,1,0)# 使用 Sobel 算子進行邊緣檢測,數(shù)據(jù)類型設(shè)置為 cv2.CV_64F,只算 x
          5 方向梯度,Sobel 核大小設(shè)置為 3
          6 scharrx = cv2.convertScaleAbs(scharrx) # 計算絕對值
          7 cv2.imshow('scharrx',scharrx)#通過 cv2.imshow()函數(shù)展示 x 方向梯度邊緣檢測計算之后的圖像
          8 scharry = cv2.Scharr(img,cv2.CV_64F,0,1) #使用 Sobel 算子進行邊緣檢測,數(shù)據(jù)類型設(shè)置為 cv2.CV_64F,只算 x
          9 方向梯度,Sobel 核大小設(shè)置為 3
          10 scharry = cv2.convertScaleAbs(scharry) #計算絕對值
          11 cv2.imshow('scharry',scharry)#通過 cv2.imshow()函數(shù)展示 y 方向梯度邊緣檢測計算之后的圖像
          12 scharrxy = cv2.addWeighted(scharrx,0.5,scharry,0.5,0) # 圖像融合的系數(shù)比為 0.5:0.5,0 表示偏置項
          13 cv2.imshow('sobelxy',scharrxy)#通過 cv2.imshow()函數(shù)展示融合之后的圖像
          14 cv2.waitKey(0)#等待下一次按鍵按下
          15
          第 1 行導(dǎo)入了 opencv 庫;
          第 2 行使用了 imread()函數(shù)對 number.png 圖片進行讀??;
          第 3 行使用了 imshow()函數(shù)對原圖像進行展示;
          第 4 行使用 Scharr 算子進行邊緣檢測計算,數(shù)據(jù)類型設(shè)置為 cv2.CV_64F,只算 x 方向梯度;
          第 8 行使用 Scharr 算子進行邊緣檢測計算,數(shù)據(jù)類型設(shè)置為 cv2.CV_64F,只算 y 方向梯度;
          第 6 行和第 10 行使用了 convertScaleAbs()函數(shù)獲取絕對值,并將圖像轉(zhuǎn)換為 8 位;
          第 7 行和第 11 行使用了 imshow()函數(shù)對兩個方向梯度進行邊緣檢測計算之后的圖像進行展示;
          第 12 行使用了 addWeighted()函數(shù)進行圖像融合,兩個圖像的融合系數(shù)比為 0.5:0.5;
          第 14 行使用了 imshow()函數(shù)對融合之后的圖像進行展示;
          第 15 行使用了 waitKey()函數(shù),持續(xù)顯示展示照片直到按鍵的按下。
          保存退出之后,在終端界面中輸入以下命令進行 python 代碼的運行,運行結(jié)果如下圖所示:
          python demo33_Scharr.py

          第 1 張圖為原圖,一個數(shù)獨圖像被顯示了出來,第 2 張圖像為 x 軸方向梯度經(jīng)過邊緣檢測計算的圖像,可以看到縱向的線條被很好的區(qū)分了出來,第 3 張圖像為 y 軸方向梯度經(jīng)過邊緣

          檢測計算的圖像,可以看到橫向的線條被很好的區(qū)分了出來,第 4 張圖像為兩張邊緣計算圖像的融合,可以看到圖像的邊緣特點被很好的展現(xiàn)了出來。至此 Scharr 算子邊緣計算相關(guān)的實驗就結(jié)束了。

          更多文檔可以查看

          B站搜索-北京迅為RK3568開發(fā)板,

          公眾Hao關(guān)注:北京迅為,


          *博客內(nèi)容為網(wǎng)友個人發(fā)布,僅代表博主個人觀點,如有侵權(quán)請聯(lián)系工作人員刪除。



          關(guān)鍵詞: 開發(fā)板

          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉