• Python+OpenCV实现图像缺陷检测


    在Jupyter Notebook上使用Python+opencv实现如下图像缺陷检测。关于opencv库的安装可以参考:Python下opencv库的安装过程与一些问题汇总

    1.实现代码

    import cv2
    import numpy
    from PIL import Image, ImageDraw, ImageFont
    
    #用于给图片添加中文字符
    def ImgText_CN(img, text, left, top, textColor=(0, 255, 0), textSize=20):
        if (isinstance(img, numpy.ndarray)):  #判断是否为OpenCV图片类型
            img = Image.fromarray(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))
        draw = ImageDraw.Draw(img)
        fontText = ImageFont.truetype("font/simhei.ttf", textSize, encoding="utf-8")
        draw.text((left, top), text, textColor, font=fontText)
    return cv2.cvtColor(numpy.asarray(img), cv2.COLOR_RGB2BGR)
    
    #读取原图片
    image0=cv2.imread("0.bmp")
    cv2.imshow("image0", image0)
    #灰度转换 gray0 = cv2.cvtColor(image0, cv2.COLOR_RGB2GRAY) cv2.imshow("gray0", gray0)

    for i in range(1,6): img0=cv2.imread(str(i)+".bmp")#原图片 img=cv2.cvtColor(cv2.imread(str(i)+".bmp"),cv2.COLOR_RGB2GRAY)#灰度图 #使用calcHist()函数计算直方图,反映灰度值的分布情况 hist = cv2.calcHist([gray0], [0], None, [256], [0.0,255.0]) h1 = cv2.calcHist([img], [0], None, [256], [0.0,255.0]) #计算图片相似度 result = cv2.compareHist(hist,h1,method=cv2.HISTCMP_BHATTACHARYYA)#巴氏距离比较,值越小相关度越高,最大值为1,最小值为0 #print(result) #设定阈值为0.1,若相似度小于0.1则为合格,否则不合格 if result <0.1: detect=ImgText_CN(img0, '合格', 10, 10, textColor=(255, 0, 0), textSize=30) else: detect=ImgText_CN(img0, '不合格', 10, 10, textColor=(255, 0, 0), textSize=30) cv2.imshow("Detect_" +str(i),detect) cv2.waitKey(0)

    2.运行结果

  • 相关阅读:
    如何查看python的notebook文件.ipynb
    pip3与pyttsx3文字语音转换
    Python字符乱码
    python3的urllib以及urllib2的报错问题
    python人脸对比
    Python 爬取qqmusic音乐url并批量下载
    稳定排序和不稳定排序
    Linux信号、信号处理和信号处理函数
    jQuery ajax表单提交
    Django setting 常用配置
  • 原文地址:https://www.cnblogs.com/BIXIABUMO/p/12925643.html
Copyright © 2020-2023  润新知