我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Python中利用opencv实现缺陷检测的方法

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Python中利用opencv实现缺陷检测的方法

这篇文章给大家分享的是有关Python中利用opencv实现缺陷检测的方法的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

python的数据类型有哪些?

python的数据类型:1. 数字类型,包括int(整型)、long(长整型)和float(浮点型)。2.字符串,分别是str类型和unicode类型。3.布尔型,Python布尔类型也是用于逻辑运算,有两个值:True(真)和False(假)。4.列表,列表是Python中使用最频繁的数据类型,集合中可以放任何数据类型。5. 元组,元组用”()”标识,内部元素用逗号隔开。6. 字典,字典是一种键值对的集合。7. 集合,集合是一个无序的、不重复的数据组合。

题目描述

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

实现过程

# -*- coding: utf-8 -*-'''作者 : 丁毅开发时间 : 2021/4/21 15:30'''import cv2import numpy as npfrom PIL import Image, ImageDraw, ImageFontimport 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)

运行结果

Python中利用opencv实现缺陷检测的方法

Python中利用opencv实现缺陷检测的方法

Python中利用opencv实现缺陷检测的方法

Python中利用opencv实现缺陷检测的方法

Python中利用opencv实现缺陷检测的方法

Python中利用opencv实现缺陷检测的方法

Python中利用opencv实现缺陷检测的方法

Python中利用opencv实现缺陷检测的方法

Python中利用opencv实现缺陷检测的方法

Python中利用opencv实现缺陷检测的方法

Python中利用opencv实现缺陷检测的方法

问题及解决方法

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实现缺陷检测的方法”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Python中利用opencv实现缺陷检测的方法

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

下载Word文档

猜你喜欢

Python中利用opencv实现缺陷检测的方法

这篇文章给大家分享的是有关Python中利用opencv实现缺陷检测的方法的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。python的数据类型有哪些?python的数据类型:1. 数字类型,包括int(整型)、l
2023-06-14

Python利用OpenCV和skimage实现图像边缘检测

提取图片的边缘信息是底层数字图像处理的基本任务之一。本文将通过OpenCV和skimage的 Canny 算法实现图像边缘检测,感兴趣的可以了解一下
2022-12-28

opencv检测动态物体的实现方法

这篇文章主要介绍“opencv检测动态物体的实现方法”,在日常操作中,相信很多人在opencv检测动态物体的实现方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”opencv检测动态物体的实现方法”的疑惑有所
2023-06-20

Python+OpenCV内置方法如何实现行人检测

小编给大家分享一下Python+OpenCV内置方法如何实现行人检测,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!您是否知道 OpenCV 具有执行行人检测的内置
2023-06-22

怎么在python中利用opencv实现一个车道线检测功能

这篇文章将为大家详细讲解有关怎么在python中利用opencv实现一个车道线检测功能,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。实现思路:1、canny边缘检测获取图中的边缘信息;2、霍
2023-06-06

树莓派上如何利用python+opencv+dlib实现嘴唇检测

小编给大家分享一下树莓派上如何利用python+opencv+dlib实现嘴唇检测,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!树莓派上利用python+opencv+dlib实现嘴唇检测项目的目标是在树莓派上运行pyth
2023-06-25

怎么利用Python+OpenCV实现简易图像边缘轮廓检测

本篇内容主要讲解“怎么利用Python+OpenCV实现简易图像边缘轮廓检测”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么利用Python+OpenCV实现简易图像边缘轮廓检测”吧!函数基础
2023-06-30

python逻辑值检测的实现方法

小编给大家分享一下python逻辑值检测的实现方法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!Python主要用来做什么Python主要应用于:1、Web开发;
2023-06-14

Python检测生僻字的实现方法

解决思路 首先想到的就是利用 python 的正则表达式来匹配非法字符,然后找出非法记录。然而理想总是丰满的,现实却是残酷的。在实现的过程中,才发现自己对于字符编码、以及 python 内部字符串表示的相关知识的缺乏。在这期间,踩过了不少坑
2022-06-04

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录