轮廓检测用于语义分割

存粹用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 灰度图像的轮廓检测

你可能感兴趣的:(深度学习基础,计算机视觉,opencv,图像处理)