图像处置过程中边缘检测常采用索贝尔,拉普拉斯算子等方式 。 普遍用于各类处置方式前期加工之中,方式也良多 。 本文采用python的opencv函数库利用Laplacian算子实现边缘检测 。
需要这些哦
pycharm和windows7情况
python3情况下opencv3模块
方式/
1理论描述:
按照官网描述和图形描画,第一张图可知:diyiznag可以形象得知,强度的一阶导数,边缘的特征是最大值,是像素强度显示“跳跃”或强度的高转变 。
第二张图可知二阶导数为零时,是边缘跳跃或强度的高转变 。 也就是边缘 。
这两张图很是形象的描画了边缘检测的理论根本 。
文章插图
文章插图
2为了简单,本身构建了一个米框图,便于不雅察!
import cv2 as cv
import numpy as np
import matplotlib.pyplot as plt
image = cv.imread('c:\\black_MiLine.png',0)
cv.imshow('image',image)
cv.waitKey(0)
文章插图
3Laplacian函数简介:
dst = cv.Laplacian(src, ddepth[, dst[, ksize[, scale[, delta[, borderType]]]]])
前两个是必需的参数:
第一个原图像;
第二个是图像的深度,-1暗示与原图像不异深度 。 方针图像深度必需大于等于原图像深度;
厥后是可选的参数:
dst方针图像;
ksize是算子的大小,必需为1、3、5、7 。 默认为1 。
scale是缩放导数的比例常数,默认无伸缩系数;
delta是可选增量,会加到最终的dst中,默认环境下无额外的值加dst;
borderType是判定图像鸿沟模式 。 缺省cv.BORDER_DEFAULT 。
文章插图
4进行变换:
Laplacian = cv.Laplacian(image, cv.CV_16S, ksize=3)cv.imshow('Laplacian',Laplacian)
我们发现输出是会的 。 没有其他内容 。
文章插图
5对上述成果进行convertScaleAbs,再看成果!
Laplacian_result = cv.convertScaleAbs(Laplacian)
print(Laplacian_result)
cv.imshow('Laplacian_result',Laplacian_result)
cv.waitKey(0)
文章插图
6再来一个单步模拟
kernel = np.array([[0,-1,0],[-1,4,-1],[0,-1,0]],np.float32)
image_tmp = np.float64(image)
img_filter = cv.filter2D(image_tmp,-1,kernel)
cv.imshow('img_filter',img_filter)
cv.waitKey(0)
【python3+opencv3用拉普拉斯算子实现边缘检测】至此完当作拉普拉斯算子 。
文章插图
注重事项就两步 1)先cv.Laplacian(image, cv.CV_16S, ksize=3)
2)再 cv.convertScaleAbs(Laplacian) 即可
以上内容就是python3+opencv3用拉普拉斯算子实现边缘检测的内容啦,希望对你有所帮助哦!
推荐阅读
- 使用拉布拉多寻回犬作为搜救犬
- CAD如何使用拉伸
- Pro/e中如何用拉伸命令造一个100x100x100正方体
- 怎么用拉力器健身?拉力器锻炼肌肉的方法
- matlab怎么利用有限差分拉普拉斯算子
- 在CAD中我们如何使用拉伸功能
- python有限差分求解拉普拉斯方程