神剑山庄资源网 Design By www.hcban.com
一、利用直方图的方式进行批量的图片缺陷检测(方法简单)
二、步骤(完整代码见最后)
2.1灰度转换(将原图和要检测对比的图分开灰度化)
灰度化的作用是因为后面的直方图比较需要以像素256为基准进行相关性比较
img = cv2.imread("0.bmp") #原图灰度转换 gray = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY) #循环要检测的图,均灰度化 for i in range(1, 6): t1=cv2.cvtColor(cv2.imread(str(i)+".bmp"),cv2.COLOR_RGB2GRAY)
2.2 直方图计算(结果其实是二维的图表--用画图的方式展示)
calcHist参数讲解
- 第一个参数: 必须为列表[],哪怕只有一个图片 ,image输入图像
- channels::传入图像的通道, 如果是灰度图像,那就不用说了,只有一个通道,值为0 ,如果是彩色图像(有3个通道),那么值为0,1,2,中选择一个,对应着BGR各个通道。这个值也得用[]传入。
- mask:掩膜图像。 如果统计整幅图,那么为none 。主要是如果要统计部分图的直方图,就得构造相应的炎掩膜来计算。
- histSize:灰度级的个数, 需要中括号,比如[256]
- ranges:像素值的范围, 通常[0,256] ,有的图像如果不是0-256,比如说你来回各种变换导致像素值负值、很大,则需要调整后才可以。
#直方图计算的函数,反应灰度值的分布情况
hist = cv2.calcHist([gray], [0], None, [256], [0.0,255.0])
h1 = cv2.calcHist([t1], [0], None, [256], [0.0,255.0])
2.3 相关性比较
cv2.compareHist(H1, H2, method)
其中:
- H1,H2 分别为要比较图像的直方图
- method - 比较方式
- 比较方式(method)
- 相关性比较 (method=cv.HISTCMP_CORREL) 值越大,相关度越高,最大值为1,最小值为0-----------------------只用一种固然不是很严谨,但这里做示范,把阈值调高也差不多( 取大于等于0.9 )
- 卡方比较(method=cv.HISTCMP_CHISQR 值越小,相关度越高,最大值无上界,最小值0
- 巴氏距离比较(method=cv.HISTCMP_BHATTACHARYYA) 值越小,相关度越高,最大值为1,最小值为0
- #相关性计算,采用相关系数的方式
- result = cv2.compareHist(hist,h1,method=cv2.HISTCMP_CORREL)
2.4 展示结果(判断阈值)
相关系数含义参考表
im = Image.open(str(i) + ".bmp") draw = ImageDraw.Draw(im) fnt = ImageFont.truetype(r'C:\Windows\Fonts\simsun.ttc', 30) #这里视作》=0.9认为相似,即合格 if result >=0.9: draw.text((5, 10), u'合格', fill='red', font=fnt) else: draw.text((5, 10), u'不合格', fill='red', font=fnt) im.show("result" +str(i) + ".png")
三、完整代码
# -*- coding: UTF-8 -*- import cv2 from PIL import Image, ImageDraw, ImageFont img = cv2.imread("0.bmp") #原图灰度转换 gray = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY) for i in range(1, 6): t1=cv2.cvtColor(cv2.imread(str(i)+".bmp"),cv2.COLOR_RGB2GRAY) #直方图计算的函数,反应灰度值的分布情况 hist = cv2.calcHist([gray], [0], None, [256], [0.0,255.0]) h1 = cv2.calcHist([t1], [0], None, [256], [0.0,255.0]) #相关性计算,采用相关系数的方式 result = cv2.compareHist(hist,h1,method=cv2.HISTCMP_CORREL) im = Image.open(str(i) + ".bmp") draw = ImageDraw.Draw(im) fnt = ImageFont.truetype(r'C:\Windows\Fonts\simsun.ttc', 30) #这里视作》=0.9认为相似,即合格 if result >=0.9: draw.text((5, 10), u'合格', fill='red', font=fnt) else: draw.text((5, 10), u'不合格', fill='red', font=fnt) im.show("result" +str(i) + ".png")
参考博文:
Python-Opencv中用compareHist函数进行直方图比较进行对比图片:
https://www.jb51.net/article/184210.htm
OpenCV-Python 直方图-1:查找、绘制和分析|二十六: http://baijiahao.baidu.com/s"color: #ff0000">总结
神剑山庄资源网 Design By www.hcban.com
神剑山庄资源网
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件!
如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
神剑山庄资源网 Design By www.hcban.com
暂无python opencv实现图片缺陷检测(讲解直方图以及相关系数对比法)的评论...
更新日志
2024年11月18日
2024年11月18日
- 【雨果唱片】中国管弦乐《鹿回头》WAV
- APM亚流新世代《一起冒险》[FLAC/分轨][106.77MB]
- 崔健《飞狗》律冻文化[WAV+CUE][1.1G]
- 罗志祥《舞状元 (Explicit)》[320K/MP3][66.77MB]
- 尤雅.1997-幽雅精粹2CD【南方】【WAV+CUE】
- 张惠妹.2007-STAR(引进版)【EMI百代】【WAV+CUE】
- 群星.2008-LOVE情歌集VOL.8【正东】【WAV+CUE】
- 罗志祥《舞状元 (Explicit)》[FLAC/分轨][360.76MB]
- Tank《我不伟大,至少我能改变我。》[320K/MP3][160.41MB]
- Tank《我不伟大,至少我能改变我。》[FLAC/分轨][236.89MB]
- CD圣经推荐-夏韶声《谙2》SACD-ISO
- 钟镇涛-《百分百钟镇涛》首批限量版SACD-ISO
- 群星《继续微笑致敬许冠杰》[低速原抓WAV+CUE]
- 潘秀琼.2003-国语难忘金曲珍藏集【皇星全音】【WAV+CUE】
- 林东松.1997-2039玫瑰事件【宝丽金】【WAV+CUE】