OpenCV學習之圖像梯度算子詳解
本文是OpenCV圖像視覺入門之路的第12篇文章,本文詳細的介紹瞭圖像梯度算子的各種操作,例如:Sobel算子Scharr算子laplacian算子等操作。
1.Sobel算子
Sobel算子是一種圖像邊緣檢測算子,它是一種空間濾波器,可以檢測圖像中的邊緣,而梯度運算是一種求導數的方法,可以用來檢測圖像中的局部變化。
import cv2 import numpy as np from numpy import unicode if __name__ == '__main__': # 不同算子的差異 img = cv2.imread('D:/Jupyter_Notebooks/0.jpg', cv2.IMREAD_GRAYSCALE) sobel_x = cv2.Sobel(img, cv2.CV_64F, 1, 0, ksize=3) sobel_y = cv2.Sobel(img, cv2.CV_64F, 0, 1, ksize=3) sobel_x = cv2.convertScaleAbs(sobel_x) sobel_y = cv2.convertScaleAbs(sobel_y) sobel_xy = cv2.addWeighted(sobel_x, 0.5, sobel_y, 0.5, 0) cv2.imshow("sobel_xy", sobel_xy) img = cv2.imread('D:/Jupyter_Notebooks/0.jpg', cv2.IMREAD_GRAYSCALE) cv2.imshow("img", img) cv2.waitKey(0) cv2.destroyAllWindows()
2.Scharr算子
Sobel算子是一種圖像邊緣檢測算法,它可以檢測圖像中的水平邊緣和垂直邊緣。它使用卷積核來檢測圖像中的邊緣,並且可以檢測出圖像中的細微變化。OpenCV是一個計算機視覺庫,它提供瞭一系列的函數,可以用來處理圖像,包括Sobel算子。OpenCV提供瞭一系列的函數,可以用來處理圖像,包括Sobel算子,但它也提供瞭其他的圖像處理算法,如Canny邊緣檢測算法,Hough變換算法等。
import cv2 import numpy as np from numpy import unicode if __name__ == '__main__': img = cv2.imread('D:/Jupyter_Notebooks/0.jpg', cv2.IMREAD_GRAYSCALE) scharrx = cv2.Scharr(img, cv2.CV_64F, 1, 0) scharry = cv2.Scharr(img, cv2.CV_64F, 0, 1) scharrx = cv2.convertScaleAbs(scharrx) scharry = cv2.convertScaleAbs(scharry) scharrxy = cv2.addWeighted(scharrx, 0.5, scharry, 0.5, 0) cv2.imshow("scharrxy", scharrxy) img = cv2.imread('D:/Jupyter_Notebooks/0.jpg', cv2.IMREAD_GRAYSCALE) cv2.imshow("img", img) cv2.waitKey(0) cv2.destroyAllWindows()
3.laplacian算子
Laplacian算子是一種圖像處理技術,它可以用來檢測圖像中的邊緣和輪廓。它是一種二階微分算子,可以用來檢測圖像中的邊緣,並且可以用來檢測圖像中的噪聲。它的基本原理是,它會計算圖像中每個像素點的梯度,並且根據梯度的大小來檢測圖像中的邊緣。
import cv2 import numpy as np from numpy import unicode if __name__ == '__main__': img = cv2.imread('D:/Jupyter_Notebooks/0.jpg', cv2.IMREAD_GRAYSCALE) laplacian = cv2.Laplacian(img, cv2.CV_64F) laplacian = cv2.convertScaleAbs(laplacian) cv2.imshow("laplacian", laplacian) img = cv2.imread('D:/Jupyter_Notebooks/0.jpg', cv2.IMREAD_GRAYSCALE) cv2.imshow("img", img) cv2.waitKey(0) cv2.destroyAllWindows()
到此這篇關於OpenCV學習之圖像梯度算子詳解的文章就介紹到這瞭,更多相關OpenCV圖像梯度算子內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- python中的opencv 圖像梯度
- Python OpenCV實現邊緣檢測
- OpenCV 圖像梯度的實現方法
- opencv python簡易文檔之圖像處理算法
- OpenCV學習之圖像形態學處理詳解