python opencv——边缘检测算子

时间:2020-03-15 19:48:51   收藏:0   阅读:142

原始图片:

技术分享图片

 

 对图片进行的操作:

1. 原始图片反色

2. 原始图片通过SOBEL进行边缘检测,然后反色

3. 原始图片通过ROBERT进行边缘检测,然后反色

代码:

import matplotlib.pyplot as plt
import cv2
import numpy as np
img = cv2.imread(02.bmp, 0)
dst = cv2.bitwise_not(img)
cv2.imshow("reserve", dst)#反色
x = cv2.Sobel(dst, cv2.CV_16S, 1, 0)
y = cv2.Sobel(dst, cv2.CV_16S, 0, 1)
Scale_absX = cv2.convertScaleAbs(x)  # convert 转换  scale 缩放
Scale_absY = cv2.convertScaleAbs(y)
result = cv2.addWeighted(Scale_absX, 0.5, Scale_absY, 0.5, 0)


kernelx = np.array([[-1,0],[0,1]], dtype=int)
kernely = np.array([[0,-1],[1,0]], dtype=int)
x_ = cv2.filter2D(dst, cv2.CV_16S, kernelx)
y_ = cv2.filter2D(dst, cv2.CV_16S, kernely)
#转uint8
absX = cv2.convertScaleAbs(x_)
absY = cv2.convertScaleAbs(y_)
Roberts = cv2.addWeighted(absX,0.5,absY,0.5,0)
v3=cv2.bitwise_not(result)
v4=cv2.bitwise_not(Roberts)
titles = [dip_switch_02,src, Sobel, Roberts]
imgs = [img, dst, v3, v4]

cv2.imshow(img, img)
cv2.imshow("reserve", dst)#反色
v3=cv2.bitwise_not(result)
cv2.imshow("v3", v3)#反色
v4=cv2.bitwise_not(Roberts)
cv2.imshow("v4", v4)#反色
#
cv2.waitKey(0)
cv2.destroyAllWindows()

运行结果:

技术分享图片

 

 最好不要合并结果,合并会使底色出现问题,一个一个输出会好一些。

1. 原始图片反色

2. 原始图片通过SOBEL进行边缘检测,然后反色

3. 原始图片通过ROBERT进行边缘检测,然后反色

原文:https://www.cnblogs.com/ngxt/p/12499308.html

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!