iis服务器助手广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python opencv缺陷检测的实现及问题解决
  • 682
分享到

Python opencv缺陷检测的实现及问题解决

2024-04-02 19:04:59 682人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

题目描述 利用OpenCV或其他工具编写程序实现缺陷检测。 实现过程 # -*- coding: utf-8 -*- ''' 作者 : 丁毅 开发时间 : 2021/4/21

题目描述

利用OpenCV或其他工具编写程序实现缺陷检测。

实现过程


# -*- coding: utf-8 -*-
'''
作者 : 丁毅
开发时间 : 2021/4/21 15:30
'''
import cv2
import numpy as np
from PIL import Image, ImageDraw, ImageFont
import matplotlib.pyplot as plt


#用于给图片添加中文字符的函数
def cv2ImgAddText(img, text, left, top, textColor=(0, 255, 0), textSize=20):
    # 判断是否OpenCV图片类型
    if (isinstance(img, np.ndarray)):
        img = Image.fromarray(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))
    # 创建一个可以在给定图像上绘图的对象
    draw = ImageDraw.Draw(img)
    # 字体的格式
    fontStyle=ImageFont.truetype("font/simsun.ttc",textSize, encoding="utf-8")
    # 绘制文本
    draw.text((left, top), text, textColor, font=fontStyle)
    # 转换回OpenCV格式
    return cv2.cvtColor(np.asarray(img), cv2.COLOR_RGB2BGR)

# plt绘图显示中文
plt.rcParams['font.family'] = 'SimHei'
img0 = cv2.imread(r"C:\Users\pc\Desktop\0.bmp")
cv2.imshow('img', img0)
# 彩色图转灰度图
img1 = cv2.cvtColor(img0, cv2.COLOR_BGR2GRAY)

# 缺陷检测
for i in range(1, 6):
    defect_img0 = cv2.imread(r"C:\Users\pc\Desktop\%d.bmp"%i)
    # 获取灰度图像
    defect_img1 = cv2.cvtColor(defect_img0, cv2.COLOR_BGR2GRAY)
    # 获取原图像的灰度直方图
    hist0 = cv2.calcHist([img1], [0], None, [256], [0.0, 255.0])
    # 获取待检测图像的灰度直方图
    hist1 = cv2.calcHist([defect_img1], [0], None, [256], [0.0, 255.0])
    # 为图像添加标题
    plt.title("原图与待检测img%d对比"%i)
    # 添加图例
    plt.plot(hist0, label='原图')
    plt.plot(hist1, label='待检测img%d'%i)
    # 相似度比较
    rst = cv2.compareHist(hist0, hist1, method=cv2.HISTCMP_CORREL)
    # res >= 0.95即认为合格
    cv2.imshow(str(i) + ".img", cv2ImgAddText(defect_img0, "合格" if rst >= 0.95 else "不合格", 20, 20, (255, 0, 0), 25))
    # 设置x轴的数值范围
    plt.xlim([0, 256])
    plt.legend(loc='upper left')
    plt.show()
cv2.waiTKEy(0)

运行结果

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

问题及解决方法

1.获取原图的直方图

参考链接
方式:
cv2.calcHist(images, channels, mask, histSize, ranges[, hist[, accumulate ]])

images:输入的图像channels:选择图像的通道mask:是一个大小和image一样的np数组,其中把需要处理的部分指定为1,不需要处理的部分指定为0,一般设置为None,表示处理整幅图像。histSize:使用多少个bin(柱子),一般为256ranges:像素值的范围,一般为[0,255]表示0~255

该函数结果返回一个二维数组,该数组反应画面中亮度的分布和比例。

2.比较两个直方图的相似度
参考链接
方式:
cv2.compareHist(H1, H2, method)

H1:第一个直方图数组H2:第二个直方图数组(与第一个纬度相同)method:所使用的方式

该函数返回一个[0,1]的相似度值,值越接近一就表名相似度越高。

3.相似度参数微调
由于compareHist函数返回一个[0,1]的值,需要自己调整一个阈值来选取哪些合格,经过调整后,发现阈值取[0.90, 0.95]能够正确选取与实验的结果,代码中取的是0.95,即待检测图与原图之间的相似度如果小于0.95则不合格。

4.通过plot显示原图与待检测图的关系折线
参考链接
通过calcHist函数返回的hist数组值,运用matplotlib绘制原图和待检测图之间的关系折线图。对比两个曲线的差异。

到此这篇关于python opencv缺陷检测的实现的文章就介绍到这了,更多相关opencv缺陷检测内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Python opencv缺陷检测的实现及问题解决

本文链接: https://www.lsjlt.com/news/124417.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python opencv缺陷检测的实现及问题解决
    题目描述 利用opencv或其他工具编写程序实现缺陷检测。 实现过程 # -*- coding: utf-8 -*- ''' 作者 : 丁毅 开发时间 : 2021/4/21 ...
    99+
    2024-04-02
  • Python+OpenCV实现表面缺陷检测
    对于现在很多工业检测,特别是对一些精密的器件进行筛选,往往都是像素级别的,十分的精确。 主要思想 将图像转化为二值图像在对图像进行腐蚀/膨胀处理在进行轮廓检测筛选目标大小符合的轮廓...
    99+
    2024-04-02
  • Python-OpenCV实现图像缺陷检测的实例
    目录1.实现代码2.运行结果在Jupyter Notebook上使用Python+opencv实现如下图像缺陷检测。关于opencv库的安装可以参考:Python下opencv库的安...
    99+
    2024-04-02
  • Python中利用opencv实现缺陷检测的方法
    这篇文章给大家分享的是有关Python中利用opencv实现缺陷检测的方法的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。python的数据类型有哪些python的数据类型:1. 数字类型,包括int(整型)、lo...
    99+
    2023-06-14
  • Python+OpenCV实现边缘检测与角点检测详解
    目录一、边缘检测1.1、读取图像1.2、图像转换成灰度图像1.3、Sobel算子1.4、Canny算子1.5、显示正常中文的标签1.6、边缘检测结果二、角点检测2.1、读取图像2.2...
    99+
    2023-02-03
    Python OpenCV边缘检测 Python OpenCV角点检测 Python OpenCV 检测
  • Python+Opencv文本检测的实现
    目录EAST 深度学习文本检测器项目结构实施说明使用 OpenCV 实现我们的文本检测器OpenCV 文本检测结果视频文字检测结果在本教程中,您将学习如何使用 OpenCV 使用 E...
    99+
    2024-04-02
  • Python OpenCV实现图形检测示例详解
    目录1. 轮廓识别与描绘1.1 cv2.findComtours()方法1.2 cv2.drawContours() 方法1.3 代码示例2. 轮廓拟合2.1 矩形包围框拟合 - c...
    99+
    2024-04-02
  • python opencv检测直线 cv2.HoughLinesP的实现
    cv2.HoughLines()函数是在二值图像中查找直线,cv2.HoughLinesP()函数可以查找直线段。 cv2.HoughLinesP()函数原型: HoughLin...
    99+
    2024-04-02
  • Python+OpenCV实现图片中的圆形检测
    效果展示 中心的三个没检测到 import cv2 import numpy as np import matplotlib.pyplot as plt w = 20 h ...
    99+
    2024-04-02
  • Python OpenCV Canny边缘检测算法的原理实现详解
    目录Gaussian smoothingComputing the gradient magnitude and orientationNon-maxima suppressionH...
    99+
    2024-04-02
  • 树莓派上利用python+opencv+dlib实现嘴唇检测的实现
    目录1、安装相关库文件2、代码部分3、实验效果树莓派上利用python+opencv+dlib实现嘴唇检测 项目的目标是在树莓派上运行python代码以实现嘴唇检测,本来以为树莓派的...
    99+
    2024-04-02
  • 如何解决python缺失值的问题
    这篇文章主要介绍如何解决python缺失值的问题,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1、解决方法(1)忽视元组。缺少类别标签时,通常这样做(假设挖掘任务与分类有关),除非元组有多个属性缺失值,否则该方法不太...
    99+
    2023-06-15
  • PHP CI/CD 的陷阱:常见问题及解决方法
    PHP 持续集成和持续交付 (CI/CD) 的实施对于现代 Web 开发至关重要,可以显著提高软件开发和部署的效率和质量。然而,在这一过程中也存在一些常见的陷阱,如果不及时解决,可能会阻碍团队实现 CI/CD 流程的全部好处。本文着重介...
    99+
    2024-03-04
    PHP、CI/CD、陷阱、解决方法、最佳实践
  • Python运行出现DeprecationWarning的问题及解决
    目录Python运行出现DeprecationWarningPython版本问题出现DeprecationWarningPython运行出现DeprecationWarning 今天...
    99+
    2024-04-02
  • OpenCV imread读取图片失败的问题及解决
    目录OpenCV imread读取图片失败问题OpenCV读图失败的三种情况,其中一种情况罕见一、Windows粘贴可能存在非法字符二、路径斜杠的问题三、附加依赖项的原因OpenCV...
    99+
    2022-11-13
    OpenCV imread imread读取图片 imread读取图片失败
  • Python机器视觉怎么实现基于OpenCV的手势检测
    本篇内容介绍了“Python机器视觉怎么实现基于OpenCV的手势检测”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1 简介今天学长向大家介...
    99+
    2023-06-22
  • Python中的NoModulenamed***问题及解决
    目录No Module named ***问题问题描述python3 No module named 'PIL'使用命令No Module named ***问题 问...
    99+
    2024-04-02
  • python出现RuntimeError错误问题及解决
    目录下面是出现的错误解释下面是出现错误代码的原代码这是修改后的正确代码python报错:RuntimeError这种错误原因解决办法下面是出现的错误解释 RuntimeError:&...
    99+
    2024-04-02
  • Python程序的轻量化打包及模块缺失问题的解决
    摘要 采用Pyinstalle插件对python编写好的程序打包成exe文件,一般有两种方式:一直直接采用当前的编写环境打包,这种方式一般不会出错,但由于将整体环境打包,导致将程序不需要的插件也包含在内,导致打包后的软件很大,打开也比较慢,...
    99+
    2023-09-03
    python
  • pip安装opencv-python遇到的问题怎么解决
    今天小编给大家分享一下pip安装opencv-python遇到的问题怎么解决的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。p...
    99+
    2023-07-05
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作