轮廓检测用于语义分割

存粹用opencv即可获得轮廓信息

  1. 以灰度图形式加载图像
baz_imge_cv = cv2.imread(dir + img_name, 0)  # 以灰度形式加载图片
  1. 对图像进行直方图均衡:当图像直方图集中的时候,使用它效果明显,原来比较少像素的灰度会被分配到别的灰度去,处理后灰度范围变大,对比度变大,清晰度变大,所以能有效增强图像。
equ_img = cv2.equalizeHist(img_cv.copy())  # 图像的直方图均衡
  1. 对图像高斯模糊(高斯滤波):通常用它来减少图像噪声以及降低细节层
blur = cv2.GaussianBlur(equ_img, GaussianBlurKernelSize, 0)  # 高斯核滤波 进行高斯模糊:用来减少图像噪声,以及降低细节层次
  1. 对图像二值化(otsu自动寻找合适的阈值,对双峰直方图较好)
ret3, th_gaussian_blur = cv2.threshold(blur, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)  # 二值化,Otsu’s阈值处理通过函数cv2.threshold会自动找到一个介于两波峰之间的阈值(图像二值化的阈值不容易确定,可以尝试)
  1. 图像腐蚀 :腐蚀是一种消除边界点,使边界点内缩的过程。可以用来消除小且无意义的目标物
kernel = np.ones((3, 3), np.uint8)
gaus_erode = cv2.erode(th_gaussian_blur, kernel, iterations=erodeIterations)  # 图像的腐蚀 : 仅当内核下的所有像素均为1时,原始图像中的像素(1或0)才被视为1,否则它将被侵蚀(设为零)。
  1. 图像膨胀 :图像膨胀操作可以用来填补目标区域中某些空洞以及消除包含在目标区域中的小颗粒噪声
gaus_erode_dilate = cv2.dilate(gaus_erode, kernel, iterations=dilateIterations)  # 图像的膨胀:  如果方框中存在1,那么图像中的像素会设置为1
  1. 轮廓检测(会有很多轮廓)
contours, hierarchy = cv2.findContours(hayStackImage, cv2.RETR_LIST, cv2.CHAIN_APPROX_NONE)  # cv2 灰度图像的轮廓检测
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值