Python-OpenCV实现图像缺陷检测的实例

作者:圈er 时间:2023-02-16 19:38:46 

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

Python-OpenCV实现图像缺陷检测的实例

Python-OpenCV实现图像缺陷检测的实例

Python-OpenCV实现图像缺陷检测的实例

Python-OpenCV实现图像缺陷检测的实例

Python-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-OpenCV实现图像缺陷检测的实例

Python-OpenCV实现图像缺陷检测的实例

Python-OpenCV实现图像缺陷检测的实例

Python-OpenCV实现图像缺陷检测的实例

Python-OpenCV实现图像缺陷检测的实例

Python-OpenCV实现图像缺陷检测的实例

Python-OpenCV实现图像缺陷检测的实例

来源:https://www.cnblogs.com/BIXIABUMO/p/12925643.html

标签:OpenCV,图像,缺陷检测
0
投稿

猜你喜欢

  • 在线一元二次方程计算器实例(方程计算器在线计算)

    2024-04-10 10:45:41
  • MySQL中对于not in和minus使用的优化

    2024-01-17 04:17:20
  • oracle删除表字段和oracle表增加字段

    2023-07-16 10:52:18
  • Golang控制通道实现协程等待详解

    2023-07-21 16:23:39
  • 正确使用字体和颜色 让网页内容更易阅读

    2007-09-13 18:45:00
  • Python学习小技巧之列表项的排序

    2022-03-31 12:06:12
  • Python cookbook(数据结构与算法)实现查找两个字典相同点的方法

    2022-07-20 22:09:46
  • jupyter notebook更换皮肤主题的实现

    2023-04-13 07:31:38
  • javascript获取select值的方法完整实例

    2024-04-22 12:49:18
  • Tensorflow 查看变量的值方法

    2022-12-14 09:36:47
  • MySQL8.0.26的安装与简化教程(全网最全)

    2024-01-28 11:04:17
  • python中Task封装协程的知识点总结

    2022-10-25 13:25:02
  • Redis中3种特殊的数据类型(BitMap、Geo和HyperLogLog)

    2024-01-24 11:20:47
  • 使用递归算法结合数据库解析成Java树形结构的代码解析

    2024-01-18 00:11:33
  • Asp操作Xml的精炼类,含示例代码

    2011-02-28 11:11:00
  • MySQL (root@%) does not exist的问题

    2011-03-16 15:31:00
  • UTF-8 GBK UTF8 GB2312 之间的区别和关系介绍

    2022-06-12 12:15:46
  • Python万字深入内存管理讲解

    2021-06-30 15:49:33
  • Go语言的Windows下环境配置以及简单的程序结构讲解

    2023-08-26 16:04:10
  • python 使用matplotlib 实现从文件中读取x,y坐标的可视化方法

    2023-07-29 05:25:42
  • asp之家 网络编程 m.aspxhome.com