经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » Python3 » 查看文章
OpenCV学习之图像梯度算子详解
来源:jb51  时间:2023/2/17 9:59:17  对本文有异议

本文是OpenCV图像视觉入门之路的第12篇文章,本文详细的介绍了图像梯度算子的各种操作,例如:Sobel算子Scharr算子laplacian算子等操作。

1.Sobel算子

Sobel算子是一种图像边缘检测算子,它是一种空间滤波器,可以检测图像中的边缘,而梯度运算是一种求导数的方法,可以用来检测图像中的局部变化。

  1. import cv2
  2. import numpy as np
  3. from numpy import unicode
  4. if __name__ == '__main__':
  5. # 不同算子的差异
  6. img = cv2.imread('D:/Jupyter_Notebooks/0.jpg', cv2.IMREAD_GRAYSCALE)
  7. sobel_x = cv2.Sobel(img, cv2.CV_64F, 1, 0, ksize=3)
  8. sobel_y = cv2.Sobel(img, cv2.CV_64F, 0, 1, ksize=3)
  9. sobel_x = cv2.convertScaleAbs(sobel_x)
  10. sobel_y = cv2.convertScaleAbs(sobel_y)
  11. sobel_xy = cv2.addWeighted(sobel_x, 0.5, sobel_y, 0.5, 0)
  12. cv2.imshow("sobel_xy", sobel_xy)
  13. img = cv2.imread('D:/Jupyter_Notebooks/0.jpg', cv2.IMREAD_GRAYSCALE)
  14. cv2.imshow("img", img)
  15. cv2.waitKey(0)
  16. cv2.destroyAllWindows()

2.Scharr算子

Sobel算子是一种图像边缘检测算法,它可以检测图像中的水平边缘和垂直边缘。它使用卷积核来检测图像中的边缘,并且可以检测出图像中的细微变化。OpenCV是一个计算机视觉库,它提供了一系列的函数,可以用来处理图像,包括Sobel算子。OpenCV提供了一系列的函数,可以用来处理图像,包括Sobel算子,但它也提供了其他的图像处理算法,如Canny边缘检测算法,Hough变换算法等。

  1. import cv2
  2. import numpy as np
  3. from numpy import unicode
  4. if __name__ == '__main__':
  5. img = cv2.imread('D:/Jupyter_Notebooks/0.jpg', cv2.IMREAD_GRAYSCALE)
  6. scharrx = cv2.Scharr(img, cv2.CV_64F, 1, 0)
  7. scharry = cv2.Scharr(img, cv2.CV_64F, 0, 1)
  8. scharrx = cv2.convertScaleAbs(scharrx)
  9. scharry = cv2.convertScaleAbs(scharry)
  10. scharrxy = cv2.addWeighted(scharrx, 0.5, scharry, 0.5, 0)
  11. cv2.imshow("scharrxy", scharrxy)
  12. img = cv2.imread('D:/Jupyter_Notebooks/0.jpg', cv2.IMREAD_GRAYSCALE)
  13. cv2.imshow("img", img)
  14. cv2.waitKey(0)
  15. cv2.destroyAllWindows()

3.laplacian算子

Laplacian算子是一种图像处理技术,它可以用来检测图像中的边缘和轮廓。它是一种二阶微分算子,可以用来检测图像中的边缘,并且可以用来检测图像中的噪声。它的基本原理是,它会计算图像中每个像素点的梯度,并且根据梯度的大小来检测图像中的边缘。

  1. import cv2
  2. import numpy as np
  3. from numpy import unicode
  4. if __name__ == '__main__':
  5. img = cv2.imread('D:/Jupyter_Notebooks/0.jpg', cv2.IMREAD_GRAYSCALE)
  6. laplacian = cv2.Laplacian(img, cv2.CV_64F)
  7. laplacian = cv2.convertScaleAbs(laplacian)
  8. cv2.imshow("laplacian", laplacian)
  9. img = cv2.imread('D:/Jupyter_Notebooks/0.jpg', cv2.IMREAD_GRAYSCALE)
  10. cv2.imshow("img", img)
  11. cv2.waitKey(0)
  12. cv2.destroyAllWindows()

到此这篇关于OpenCV学习之图像梯度算子详解的文章就介绍到这了,更多相关OpenCV图像梯度算子内容请搜索w3xue以前的文章或继续浏览下面的相关文章希望大家以后多多支持w3xue!

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号