1、Sobel算子和Scharr

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

前四个是必须的参数:

  • 第一个参数是需要处理的图像;
  • 第二个参数是图像的深度,-1表示采用的是与原图像相同的深度。目标图像的深度必须大于等于原图像的深度;
  • dx和dy表示的是求导的阶数,0表示这个方向上没有求导,一般为0、1、2。

其后是可选的参数:

  • dst不用解释了;
  • ksize是Sobel算子的大小,必须为1、3、5、7。
  • scale是缩放导数的比例常数,默认情况下没有伸缩系数;
  • delta是一个可选的增量,将会加到最终的dst中,同样,默认情况下没有额外的值加到dst中;
  • borderType是判断图像边界的模式。这个参数默认值为cv2.BORDER_DEFAULT。
    #引入opencv模块
    import cv2 as cv
    #引入numpy模块
    import numpy as np
    #引入sys模块
    import sys#soble
    def sobel_test(img):grad_x = cv.Sobel(img,cv.CV_32F,1,0)grad_y = cv.Sobel(img,cv.CV_32F,0,1)gradx = cv.convertScaleAbs(grad_x)grady = cv.convertScaleAbs(grad_y)cv.imshow("gradient-x",gradx)cv.imshow("gradient-y",grady)#grad_xy = cv.Sobel(img,cv.CV_32F,2,1)#gradxy = cv.convertScaleAbs(grad_xy)#cv.imshow("gradient-xy",gradxy)gradxyadd = cv.addWeighted(gradx,0.5,grady,0.5,0) cv.imshow("gradient-xyadd",gradxyadd)def scharr_test(img):grad_x = cv.Scharr(img,cv.CV_32F,1,0)grad_y = cv.Scharr(img,cv.CV_32F,0,1)gradx = cv.convertScaleAbs(grad_x)grady = cv.convertScaleAbs(grad_y)cv.imshow("scharrgradient-x",gradx)cv.imshow("scharrgradient-y",grady)#grad_xy = cv.Sobel(img,cv.CV_32F,2,1)#gradxy = cv.convertScaleAbs(grad_xy)#cv.imshow("scharrgradient-xy",gradxy)gradxyadd = cv.addWeighted(gradx,0.5,grady,0.5,0) cv.imshow("scharrgradient-xyadd",gradxyadd)def img_test():img = cv.imread('E:/chenopencvblogimg/lena22.jpg')#判断是否读取成功if img is None:print("Could not read the image,may be path error")returncv.namedWindow("origin Pic",cv.WINDOW_NORMAL)cv.imshow("origin Pic",img)sobel_test(img)scharr_test(img)#让显示等待键盘输入维持在那里,否则程序跑完就闪退啦!cv.waitKey(0)#销毁窗口cv.destroyAllWindows()if __name__ == '__main__':sys.exit(img_test() or 0)

  • 2、Laplacian算子

  • #引入opencv模块
    import cv2 as cv
    #引入numpy模块
    import numpy as np
    #引入sys模块
    import sys#soble
    def sobel_test(img):grad_x = cv.Sobel(img,cv.CV_32F,1,0)grad_y = cv.Sobel(img,cv.CV_32F,0,1)gradx = cv.convertScaleAbs(grad_x)grady = cv.convertScaleAbs(grad_y)cv.imshow("gradient-x",gradx)cv.imshow("gradient-y",grady)#grad_xy = cv.Sobel(img,cv.CV_32F,2,1)#gradxy = cv.convertScaleAbs(grad_xy)#cv.imshow("gradient-xy",gradxy)gradxyadd = cv.addWeighted(gradx,0.5,grady,0.5,0) cv.imshow("gradient-xyadd",gradxyadd)def scharr_test(img):grad_x = cv.Scharr(img,cv.CV_32F,1,0)grad_y = cv.Scharr(img,cv.CV_32F,0,1)gradx = cv.convertScaleAbs(grad_x)grady = cv.convertScaleAbs(grad_y)cv.imshow("scharrgradient-x",gradx)cv.imshow("scharrgradient-y",grady)#grad_xy = cv.Sobel(img,cv.CV_32F,2,1)#gradxy = cv.convertScaleAbs(grad_xy)#cv.imshow("scharrgradient-xy",gradxy)gradxyadd = cv.addWeighted(gradx,0.5,grady,0.5,0) cv.imshow("scharrgradient-xyadd",gradxyadd)def laplacian_test(img):dst = cv.Laplacian(img,cv.CV_32F)lpls = cv.convertScaleAbs(dst)cv.imshow("laplacian_test",lpls)#四领域laplacian核定义实现
    def laplacian_kernel_4(img):kernel = np.array([[0,1,0],[1,-4,1],[0,1,0]])dst = cv.filter2D(img,cv.CV_32F,kernel=kernel)lpls = cv.convertScaleAbs(dst)cv.imshow("laplacian_kernel_4",lpls)#八领域laplacian核定义实现
    def laplacian_kernel_8(img):kernel = np.array([[1,1,1],[1,-8,1],[1,1,1]])dst = cv.filter2D(img,cv.CV_32F,kernel=kernel)lpls = cv.convertScaleAbs(dst)cv.imshow("laplacian_kernel_8",lpls)def img_test():img = cv.imread('E:/chenopencvblogimg/lena22.jpg')#判断是否读取成功if img is None:print("Could not read the image,may be path error")returncv.namedWindow("origin Pic",cv.WINDOW_NORMAL)cv.imshow("origin Pic",img)#sobel_test(img)#scharr_test(img)laplacian_test(img)laplacian_kernel_4(img)laplacian_kernel_8(img)#让显示等待键盘输入维持在那里,否则程序跑完就闪退啦!cv.waitKey(0)#销毁窗口cv.destroyAllWindows()if __name__ == '__main__':sys.exit(img_test() or 0)

OpenCV__Python sobel算子_教程19相关推荐

  1. python sobel算子_利用sobel算子计算图像的梯度(python+opencv)

    sobel算子计算的梯度图是带有方向的 代码实现如下: #coding=utf-8 import cv2 import numpy as np #利用sobel算子计算图像的梯度 img=cv2.im ...

  2. sobel算子_边缘检测算法4.-教你动手实现kirsch和robinson算子

    还有很多 边缘检测算子,在OpenCV中没有实现代码. 所以,我们得掌握看懂算法,然后扩展 算法得能力. 比如,我已知的一些 边缘检测核心: Kirsch 8方向算子 Robinson 8方向算子 这 ...

  3. 【OpenCV入门教程之十二】OpenCV边缘检测:Canny算子,Sobel算子,Laplace算子,Scharr滤波器合辑

    本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接: http://blog.csdn.net/poem_qianmo/article/details/25560901 作者:毛星云(浅墨) ...

  4. OpenCV-Python教程(6)(7)(8): Sobel算子 Laplacian算子 Canny边缘检测

    OpenCV-Python教程(6.Sobel算子) 本篇文章介绍如何用OpenCV-Python来使用Sobel算子. 提示: 转载请详细注明原作者及出处,谢谢! 本文介绍使用OpenCV-Pyth ...

  5. sobel算子原理_「学术论文」基于Sobel算法图像边缘检测的FPGA实现

    摘要: 针对嵌入式软件无法满足数字图像实时处理速度问题,提出用硬件加速器的思想,通过FPGA实现Sobel边缘检测算法.通过乒乓操作.并行处理数据和流水线设计,大大提高算法的处理速度.采用模块的硬件设 ...

  6. 图像锐化拉普拉斯算子matlab,Matlab图像锐化-Sobel,Laplacian算子 实验教程

    一.实验内容: ⑴图像的锐化:使用Sobel,Laplacian算子分别对图像进行运算,观察并体会运算结果. ⑵综合练习:对需要进行处理的图像分析,正确运用所学的知识,采用正确的步骤,对图像进行各类处 ...

  7. 【8】python-opencv3教程:边缘检测(Roberts算子边缘检测,Prewitt算子边缘检测,Sobel算子边缘检测)

    第八节:边缘检测 边缘检测:边缘检测指的是灰度值发生急剧变化的位置,边缘检测的目的是制作一个线图,在不会损害理解图像内容的情况下, 有大大减少了图像的数据量,提供了对图像数据的合适概述. 一:Robe ...

  8. java求sobel算子代码_边缘检测sobel算子

    #1,个人理解 网上查了很多资料,都说sobel算子是用来检测边缘的,分别给了两个方向上的卷积核,然后说明做法,就说这就是sobel算子.对于我个人来说,还有很多不明白的地方,所以理清下思路. #2, ...

  9. 【OpenCV 4开发详解】Sobel算子

    本文首发于"小白学视觉"微信公众号,欢迎关注公众号 本文作者为小白,版权归人民邮电出版社发行所有,禁止转载,侵权必究! 经过几个月的努力,小白终于完成了市面上第一本OpenCV 4 ...

最新文章

  1. ppt格式刷快捷键_高效地制作PPT
  2. Uipath 学习栏目基础教学:5Uipath流程控制语句-整合
  3. c++语句和流程控制
  4. java 多线程 共享数据_JAVA多线程提高四:多个线程之间共享数据的方式
  5. 深入理解C++对象模型-对象的内存布局,vptr,vtable
  6. 某银行大型管理系统端到端持续集成和交付实践
  7. 三星系统和鸿蒙系统,又一设备直升鸿蒙系统,现有操作系统被抛弃,和三星的想法一样!...
  8. ubuntu mysql开发_Ubuntu下进行基于MySQL的JDBC的开发
  9. python中的多线程(一)
  10. vue手机端回退_vue移动端弹框组件 - osc_eiolhkks的个人空间 - OSCHINA - 中文开源技术交流社区...
  11. Vim命令大全(linux)
  12. 极通Aipcconn已停止工作问题处理方法
  13. 【数字IC】深入浅出理解AXI协议
  14. 关于 MySQL bug 91418 一些看法
  15. Leetcode.365 水壶问题
  16. 小米手机电池校正_华为小米等安卓福音:超实用手机电池校正 解决电池虚标不耐用!...
  17. 解决idea控制台中文乱码问题
  18. FileWriter和BufferedWriter用处,区别
  19. php exit 和die,PHP中的die()和exit()有什么区别?
  20. uniapp微信小程序瀑布流布局

热门文章

  1. mm和active_mm
  2. 两百家电视台上云端 传统电视自我救赎
  3. Implicitly declaring library function ‘malloc‘ with type ‘void *(unsigned long)‘
  4. 众网友吐槽:十大累成狗专业。程序员居榜首!!!
  5. CDMA在卫星移动通信中的应用(转)
  6. 2022最新出炉的软件测试面试宝典附答案
  7. Marco's Java【Redis入门(三) 之 Redis数据类型及用法】
  8. 目标检测(二)——SPPNet
  9. 回归测试与确认测试的区别
  10. 魅族手机不能连接mac pro的eclipse