Python-OpenCV实现图像缺陷检测的实例
作者:圈er 发布时间:2023-02-16 19:38:46
标签: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.运行结果
来源:https://www.cnblogs.com/BIXIABUMO/p/12925643.html


猜你喜欢
- 该爬虫应用了创建文件夹的功能:#file settingfolder_path = "D:/spider_things/2016.
- 目录典型的函数装饰器叠放装饰器参数化装饰器标准库中的装饰器functools.wrapsfunctools.lru_cachefunctoo
- 使用expdp时,遇到”ORA-39002、ORA-39070......”连续报错。1、 遇到的问题C:\Users\Admi
- 1、ul标签在Mozilla中默认是有padding值的,而在IE中只有margin有值。 2、同一个的class选择符可以在一个
- 开发一个相机应用,需要申请三个权限:相机、读文件、写文件。1、在AndroidManifest.xml中添加<uses-permiss
- python 网络编程详解网络编程的专利权应该属于Unix,各个平台(如windows、Linux等)、各门语言(C、C++、Python、
- .whl文件解释whl文件时以wheel格式保存的python安装包,Wheel是Python发行版的标准内置包格式。WHL文件包含Pyth
- Python3还是没有switch,可以利用if-else来实现,但是非常不方便。使用dict来实现会比较简洁优雅。# -*- coding
- PyCharm 中在使用Turtle(海龟)库绘图体系时,代码明明是正确可以运行的,但是没有提示 ,代码出现黄色标记以及红色波浪线 ,经验不
- 对于access数据库的日期时间类型字段存储的日期,直接从数据库中读出显示的效果是带时间的如,2009-06-13 18:00 ,如果只是希
- 业务场景由于项目需求,需要对相关类目进行多选,类目数据量又特别大,业务逻辑是使用懒加载方式加载各级类目数据,编辑时回显用户选择的类目。问题描
- 1.功能简介此程序模拟员工信息数据库操作,按照语法输入指令即能实现员工信息的增、删、改、查功能。2.实现方法• 架构:本程序采用python
- 目前定时的操作有:一、Html页面的定时刷新(Refresh--刷新 ) 1,Refresh (刷新) 代码使用说明 说明:让网页多长时间(
- 创建复合主键: 方法一:创建表之后,alter table table_name add primary key(字段1,字段2)
- 1.什么是Javascript?Javascript是一种用于Web开发的编程语言。JavaScript在网络的客户端上运行。根据MDN,J
- 在Python数据可视化中,seaborn较好的提供了图形的一些可视化功效。seaborn官方文档见链接:http://seaborn.py
- global 属性返回 Boolean 值,指出正则表达式使用的global 标志 (g) 的状态。默认值为 false。只读。rgExp.
- 正文之前上午给爸爸打了个电话庆祝他50岁生日,在此之前搞了个大扫除,看了会知乎,到实验室已经十一点多了。约喜欢的妹子吃饭失败,以至于工作积极
- 前言最近在写 echarts 的时候碰到了这么一个报错,如下图。造成报错的原因是因为 echarts 的图形容器还未生成就对其进行了初始化,
- 1 跳出循环-breakpython提供了一种方便快捷的跳出循环的方法-break,示例如下,计算未知数字个数的总和:if __name__