一阶导数与Soble算子

二阶导数与拉普拉斯算子

图像边缘:

Soble算子:

二阶导数:

拉普拉斯算子:

import cv2 as cv
import numpy as np # 图像梯度(由x,y方向上的偏导数和偏移构成),有一阶导数(sobel算子)和二阶导数(Laplace算子)
# 用于求解图像边缘,一阶的极大值,二阶的零点
# 一阶偏导在图像中为一阶差分,再变成算子(即权值)与图像像素值乘积相加,二阶同理
def sobel_demo(image):
grad_x = cv.Sobel(image, cv.CV_32F, 1, 0) # 采用Scharr边缘更突出
grad_y = cv.Sobel(image, cv.CV_32F, 0, 1) gradx = cv.convertScaleAbs(grad_x) # 由于算完的图像有正有负,所以对其取绝对值
grady = cv.convertScaleAbs(grad_y) # 计算两个图像的权值和,dst = src1*alpha + src2*beta + gamma
gradxy = cv.addWeighted(gradx, 0.5, grady, 0.5, 0) cv.imshow("gradx", gradx)
cv.imshow("grady", grady)
cv.imshow("gradient", gradxy) def laplace_demo(image): # 二阶导数,边缘更细
dst = cv.Laplacian(image,cv.CV_32F)
lpls = cv.convertScaleAbs(dst)
cv.imshow("laplace_demo", lpls) def custom_laplace(image):
# 以下算子与上面的Laplace_demo()是一样的,增强采用np.array([[1, 1, 1], [1, -8, 1], [1, 1, 1]])
kernel = np.array([[1, 1, 1], [1, -8, 1], [1, 1, 1]])
dst = cv.filter2D(image, cv.CV_32F, kernel=kernel)
lpls = cv.convertScaleAbs(dst)
cv.imshow("custom_laplace", lpls) def main():
src = cv.imread("../images/lena.jpg")
cv.imshow("lena",src)
# sobel_demo(src)
laplace_demo(src)
custom_laplace(src)
cv.waitKey(0) # 等有键输入或者1000ms后自动将窗口消除,0表示只用键输入结束窗口
cv.destroyAllWindows() # 关闭所有窗口 if __name__ == '__main__':
main()

最新文章

  1. PageRank的java实现
  2. 疯狂位图之——位图实现12GB无重复大整数集排序
  3. heredoc 和 nowdoc
  4. 将U盘分成 启动盘+文件存储区
  5. NServiceBus-进阶
  6. SSIS 学习(7):包配置(下)【转】
  7. axure注册码
  8. JDBC入门try/catch型
  9. (转) c# ExecuteNonQuery() 返回值 -1
  10. Sql 中常用日期转换Convert(Datetime)
  11. Serv-U无法连接到服务器127.0.0.1,端口43958 FTP服务器不能启动
  12. 客户端浏览器判断(ios .android)
  13. linux shadow破解
  14. 详解< meta http-equiv = "X-UA-Compatible" content = "IE=edge,chrome=1" />
  15. Alpha冲刺No.6
  16. FPM五:拆解前面的四——OVP做查询和结果
  17. 如何用jquery获取form表单的值
  18. /dev/null 2>&1 什么意思
  19. linux Shell 脚本编写
  20. [python-opencv]超大图像二值化方法

热门文章

  1. Java流,文件和I/O
  2. JavaScript的严格检查模式
  3. Winfrom控件 特效
  4. c语言修炼之一
  5. 记录 shell学习过程(1) 超简单的面向过程的2个shell 分区以及创建lvm
  6. Paper: A novel visibility graph transformation of time series into weighted networks
  7. Flink读写Kafka
  8. HTML学习(10)图像
  9. 使用git pull同步github代码到服务器
  10. es8中对string补白的方式