图像处理之灰度化,二值化,腐蚀,膨胀

Posted 利弗莫尔_truefan

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了图像处理之灰度化,二值化,腐蚀,膨胀相关的知识,希望对你有一定的参考价值。

灰度化,在RGB模型中,如果R=G=B时,则彩色表示一种灰度颜色,其中R=G=B的值叫灰度值,因此,灰度图像每个像素只需一个字节存放灰度值。

二值图像(Binary Image)是指将图像上的每一个像素只有两种可能的取值或灰度等级状态

腐蚀就是将图像的边缘腐蚀掉。作用就是将目标的边缘的“毛刺”踢除掉。

膨胀就是将图像的边缘扩大些。作用就是将目标的边缘或者是内部的坑填掉。

使用腐蚀与膨胀,可以使目标表面更平滑。

import cv2
import numpy
import numpy as np
from PIL import Image
import matplotlib.pyplot as plt

def get_gray_scale(img_path):
    # 将图像灰度化
    img = cv2.imread(img_path, cv2.IMREAD_GRAYSCALE)
    print('大小:{}'.format(img.shape))
    print("类型:%s" % type(img))
    # 让书和背景分离,这里我们将图片二值化
    retVal, image = cv2.threshold(img, 100, 255, cv2.THRESH_BINARY)

    # 开始进行腐蚀操作
    corrosion_img = cv2.getStructuringElement(cv2.MORPH_CROSS, (10, 10))  ##腐蚀预处理,确定处理核的大小,矩阵操作
    img3 = cv2.erode(image, corrosion_img, iterations=10)  # 进行腐蚀操作
    kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (5, 5))
    expand_pic = cv2.dilate(img3, kernel)

    pic_matrix = numpy.array(expand_pic)
    print(pic_matrix)


    cv2.imshow('grayimg', expand_pic)
    cv2.waitKey(0)



if __name__=='__main__':
    # get the img_path
    sample_img_path = './sample1.jpg'
    get_gray_scale(sample_img_path)

 

 

以上是关于图像处理之灰度化,二值化,腐蚀,膨胀的主要内容,如果未能解决你的问题,请参考以下文章

matlab形态学处理——膨胀腐蚀的原理

Python+OpenCV图像处理之腐蚀与膨胀

opencv-python基础用法详细代码-图片加载-ROI-边缘滤波-二值化-轮廓提取-膨胀腐蚀等

OpenCV车辆识别 C++ OpenCV 原理介绍 + 案例实现

python验证码识别教程之灰度处理二值化降噪与tesserocr识别

图像灰度化、二值化理解