opencv 形态学图像处理-自适应阈值二值化

什么是形态学处理

  • 基于图像形态进行处理的一些基本方法
  • 这些处理方法基本上是对二进制图像进行处理
  • 卷积核决定着图像处理的效果

形态学图像处理的方法

  • 腐蚀与膨胀
  • 开运算
  • 闭运算
  • 顶帽
  • 黑帽

什么是二值化

  • 将图像的每个像素变为两种值,如0,255
  • 全局二值化
    threshod(img,thresh, maxVal, type)
    img:图像,最好是灰度图
    thresh:阈值
    maxVal: 超过阈值,替换成maxVal
    type: THRESH_BINARY和THRESH_BINARY_INV
    THRESH_TRUNC
    THRESH_TOZERO和THRESH_TOZERO_INV
import cv2 as cv
import numpy as np

img = cv.imread('./dog.jpeg')
img1 = cv.cvtColor(img,cv.COLOR_BGR2GRAY)


ret, dst = cv.threshold(img1,180,255, cv.THRESH_BINARY)

cv.imshow('img', img)
cv.imshow('img1', img1)
cv.imshow('dst', dst)

cv.waitKey(0)

opencv 形态学图像处理-自适应阈值二值化_第1张图片
opencv 形态学图像处理-自适应阈值二值化_第2张图片

  • 局部二值化
    自适应阈值
    由于光照不均以及阴影的存在,只有一个阈值会使得在阴影处的白色被二值化成黑色
    adaptiveThreshold(img, maxVal, adaptiveMethodtype,blockSize,C)
    adaptiveMethodtype:计算阈值的方法
    blockSize: 邻近区域的大小
    C:常量,应从计算出的平均值或加权平均值中减去
    adaptiveMethod的方法:
    cv.ADAPTIVE_THRESH_MEAN_C 计算邻近区域的平均值
    cv.ADAPTIVE_THRESH_GAUSSIAN_C 高斯窗口加权平均值
    Type
    type: THRESH_BINARY和THRESH_BINARY_INV
import cv2 as cv
import numpy as np

img = cv.imread('./dog.jpeg')
img1 = cv.cvtColor(img,cv.COLOR_BGR2GRAY)

# ret, dst = cv.threshold(img1,180,255, cv.THRESH_BINARY)
dst = cv.adaptiveThreshold(img1, 255, cv.ADAPTIVE_THRESH_GAUSSIAN_C,cv.THRESH_BINARY, 3, 0)
cv.imshow('img', img)
cv.imshow('img1', img1)
cv.imshow('dst', dst)

cv.waitKey(0)

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