zoukankan      html  css  js  c++  java
  • opencv-python 图像基础处理(二)

    图像阈值

    ret, dst = cv2.threshold(src, thresh, maxval, type)

    - src: 输入图,只能输入单通道图像,通常来说为灰度图
    - dst: 输出图
    - thresh: 阈值 0-255 一般是127
    - maxval: 当像素值超过了阈值(或者小于阈值,根据type来决定),所赋予的值  最大值255
    - type:二值化操作的类型,包含以下5种类型: cv2.THRESH_BINARY; cv2.THRESH_BINARY_INV; cv2.THRESH_TRUNC; cv2.THRESH_TOZERO;cv2.THRESH_TOZERO_INV

    - cv2.THRESH_BINARY           超过阈值部分取maxval(最大值),否则取0
    - cv2.THRESH_BINARY_INV    THRESH_BINARY的反转
    - cv2.THRESH_TRUNC            大于阈值部分设为阈值,否则不变
    - cv2.THRESH_TOZERO          大于阈值部分不改变,否则设为0
    - cv2.THRESH_TOZERO_INV  THRESH_TOZERO的反转

    import cv2
    import numpy as np
    import matplotlib.pyplot as plt#Matplotlib是RGB
    
    
    img=cv2.imread('d:/image0.jpg')
    img_gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
    
    ret, thresh1 = cv2.threshold(img_gray, 127, 255, cv2.THRESH_BINARY)
    ret, thresh2 = cv2.threshold(img_gray, 127, 255, cv2.THRESH_BINARY_INV)
    ret, thresh3 = cv2.threshold(img_gray, 127, 255, cv2.THRESH_TRUNC)
    ret, thresh4 = cv2.threshold(img_gray, 127, 255, cv2.THRESH_TOZERO)
    ret, thresh5 = cv2.threshold(img_gray, 127, 255, cv2.THRESH_TOZERO_INV)
    
    titles = ['Original Image', 'BINARY', 'BINARY_INV', 'TRUNC', 'TOZERO', 'TOZERO_INV']
    images = [img, thresh1, thresh2, thresh3, thresh4, thresh5]
    
    for i in range(6):
        plt.subplot(2, 3, i + 1), plt.imshow(images[i], 'gray')
        plt.title(titles[i])
        plt.xticks([]), plt.yticks([])
    plt.show()

     

     滤波处理

    import cv2
    import numpy as np
    import matplotlib.pyplot as plt#Matplotlib是RGB
    
    
    img=cv2.imread('d:/image0.jpg')
    #cv2.imshow("image",img)
    #均值滤波
    bluer=cv2.blur(img,(3,3))
    
    #方框滤波
    #基本和均值一样,可以选择归一化
    box=cv2.boxFilter(img,-1,(3,3),normalize=True)
    
    #方框滤波
    #基本和均值一样,可以选择归一化,容易越界
    box2=cv2.boxFilter(img,-1,(3,3),normalize=False)
    res=np.hstack((bluer,box,box2))
    cv2.imshow("da",res)
     cv2.waitKey(0)
    cv2.destroyAllWindows()

     

    #高斯滤波
    #高斯滤波得卷积核里地数值满足高斯分布,相当于中间地分布
    import cv2
    import numpy as np
    img=cv2.imread("d:/image0.jpg")
    aussian=cv2.GaussianBlur(img,(3,3),1)
    #均值滤波
    bluer=cv2.blur(img,(5,5))
    #中值滤波 median
    =cv2.medianBlur(img,5) res=np.hstack((aussian,bluer,median)) cv2.imshow("aussian vs averge",res) cv2.waitKey(0) cv2.destroyAllWindows()

  • 相关阅读:
    discuz常用变量
    Discuz!X/模板标签说明
    Discuz x 默认模板文件目录说明
    apache禁止访问文件或目录执行权限、禁止运行脚本PHP文件的设置方法
    基于Java的数据采集(三)
    基于Java的数据采集(二)
    基于Java的数据采集(一)
    使用Spring JDBCTemplate简化JDBC的操作
    基于原生PHP交叉会员权限控制
    PHP上传压缩包并自解压方法
  • 原文地址:https://www.cnblogs.com/xujunjia/p/11440828.html
Copyright © 2011-2022 走看看