Python-OpenCV实现图像缺陷检测的实例
本文介绍在Jupyter Notebook中使用Python和OpenCV库进行图像缺陷检测的完整流程。通过读取图像并转换为灰度图,利用calcHist计算直方图分布,结合cv2.HISTCMP_BHATTACHARYYA进行巴氏距离相似度比对。设定0.1为阈值,低于该值判定为合格,否则为不合格,并在原图上标注结果,实现自动化的视觉质检。
本文演示如何在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和OpenCV进行图像缺陷检测的实例介绍完毕。如需获取更多OpenCV图像缺陷检测相关内容,建议查阅本站往期文章或继续阅读后续相关教程。感谢大家的支持!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













