使用形态学梯度运算进行边缘检测(python)

 时间:2024-10-11 19:31:34

1、opencv的形态学函数模块里morphologyEx函数提供了MORPH_GRADIENT让我们能够完成梯度运算。数学方法:膨胀操作与腐蚀的差。具体实现有两种:1)morphologyEx2)根据定义: 膨胀 - 腐蚀下面分别进行讨论。此图为原图和叠加效果

使用形态学梯度运算进行边缘检测(python)
使用形态学梯度运算进行边缘检测(python)

2、还是以火箭为例import numpy as npimport cv2 as cvimport copyimage = cv.imread('c:\\rocket.jpg')cv.imshow("image", image)gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY)cv.imshow("gray", gray)转成灰度

使用形态学梯度运算进行边缘检测(python)

3、ret, thresholdImg = cv.threshold(gray, 170, 255, cv.THRESH_BINARY)cv.imshow("thresholdImg", thresholdImg)

使用形态学梯度运算进行边缘检测(python)

4、kernel = cv.getStructuringElement(cv.MORPH_CROSS,(5, 5))垆杪屑丝#腐蚀图像erodImg = cv.erode(thresholdImg, kernel)#显示腐蚀后的图像cv.imshow("erodImg1", erodImg)#膨胀图像dilateImg = cv.dilate(thresholdImg, kernel)#显示膨胀后的图像cv.imshow("dilateImg1", dilateImg)

使用形态学梯度运算进行边缘检测(python)
使用形态学梯度运算进行边缘检测(python)

5、方法一:# 形态学梯度gradientImg = cv.morphologyEx(thresholdImg, cv.MORPH_GRADIENT, kernel)cv.imshow("gradientImg", gradientImg)

使用形态学梯度运算进行边缘检测(python)

6、方法二:#将两幅图像相减获得边,第一个参数是膨胀后的图像,第二个参数是腐蚀后的图像gradientImg2 = cv.subtract(dilateImg, erodImg)cv.imshow("gradientImg2", gradientImg2)

使用形态学梯度运算进行边缘检测(python)

7、#对二值图每个像素取反 方便叠加notImg = cv.bitwise_艘绒庳焰not(gradientImg)cv.imshow(&鳎溻趄酃quot;notImg", notImg)叠加效果1andImg1 = cv.bitwise_and(image, image, mask=gradientImg)cv.imshow("andImg1", andImg1)叠加效果2andImg2 = cv.bitwise_and(image, image, mask=notImg)cv.imshow("andImg2", andImg2)cv.waitKey(0)cv.destroyAllWindows()

使用形态学梯度运算进行边缘检测(python)
使用形态学梯度运算进行边缘检测(python)
使用形态学梯度运算进行边缘检测(python)
  • 正弦余弦正切函数值是
  • 国考没带身份证怎么办
  • 微分法等计算三次根号1041的近似值的方法
  • 有效利用时间的方法有哪些
  • 野外骑马技术及安全保障攻略
  • 热门搜索
    初一英语手抄报图片 诚实手抄报 童话世界手抄报 人间真情手抄报 关于庆祝六一的手抄报 文明礼仪知识手抄报 关于团结的手抄报 小学生廉洁手抄报 水是生命之源手抄报 清明节手抄报版面设计图