python opencv——边缘检测算子

原始图片:

 

 对图片进行的操作:

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进行边缘检测,然后反色

posted @ 2020-03-15 18:51  王龙32  阅读(601)  评论(0编辑  收藏  举报