最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python opencv缺陷檢測(cè)的實(shí)現(xiàn)及問(wèn)題解決

 更新時(shí)間:2021年04月23日 14:27:32   作者:Dream丶Killer  
這篇文章主要介紹了Python opencv缺陷檢測(cè)的實(shí)現(xiàn)及問(wèn)題解決,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

題目描述

利用opencv或其他工具編寫(xiě)程序?qū)崿F(xiàn)缺陷檢測(cè)。

實(shí)現(xiàn)過(guò)程

# -*- coding: utf-8 -*-
'''
作者 : 丁毅
開(kāi)發(fā)時(shí)間 : 2021/4/21 15:30
'''
import cv2
import numpy as np
from PIL import Image, ImageDraw, ImageFont
import matplotlib.pyplot as plt


#用于給圖片添加中文字符的函數(shù)
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))
    # 創(chuàng)建一個(gè)可以在給定圖像上繪圖的對(duì)象
    draw = ImageDraw.Draw(img)
    # 字體的格式
    fontStyle=ImageFont.truetype("font/simsun.ttc",textSize, encoding="utf-8")
    # 繪制文本
    draw.text((left, top), text, textColor, font=fontStyle)
    # 轉(zhuǎn)換回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)
# 彩色圖轉(zhuǎn)灰度圖
img1 = cv2.cvtColor(img0, cv2.COLOR_BGR2GRAY)

# 缺陷檢測(cè)
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])
    # 獲取待檢測(cè)圖像的灰度直方圖
    hist1 = cv2.calcHist([defect_img1], [0], None, [256], [0.0, 255.0])
    # 為圖像添加標(biāo)題
    plt.title("原圖與待檢測(cè)img%d對(duì)比"%i)
    # 添加圖例
    plt.plot(hist0, label='原圖')
    plt.plot(hist1, label='待檢測(cè)img%d'%i)
    # 相似度比較
    rst = cv2.compareHist(hist0, hist1, method=cv2.HISTCMP_CORREL)
    # res >= 0.95即認(rèn)為合格
    cv2.imshow(str(i) + ".img", cv2ImgAddText(defect_img0, "合格" if rst >= 0.95 else "不合格", 20, 20, (255, 0, 0), 25))
    # 設(shè)置x軸的數(shù)值范圍
    plt.xlim([0, 256])
    plt.legend(loc='upper left')
    plt.show()
cv2.waitKey(0)

運(yùn)行結(jié)果

在這里插入圖片描述

在這里插入圖片描述

在這里插入圖片描述

在這里插入圖片描述

在這里插入圖片描述

在這里插入圖片描述

在這里插入圖片描述

在這里插入圖片描述

在這里插入圖片描述

在這里插入圖片描述

在這里插入圖片描述

問(wèn)題及解決方法

1.獲取原圖的直方圖

參考鏈接
方式:
cv2.calcHist(images, channels, mask, histSize, ranges[, hist[, accumulate ]])

images:輸入的圖像channels:選擇圖像的通道mask:是一個(gè)大小和image一樣的np數(shù)組,其中把需要處理的部分指定為1,不需要處理的部分指定為0,一般設(shè)置為None,表示處理整幅圖像。histSize:使用多少個(gè)bin(柱子),一般為256ranges:像素值的范圍,一般為[0,255]表示0~255

該函數(shù)結(jié)果返回一個(gè)二維數(shù)組,該數(shù)組反應(yīng)畫(huà)面中亮度的分布和比例。

2.比較兩個(gè)直方圖的相似度
參考鏈接
方式:
cv2.compareHist(H1, H2, method)

H1:第一個(gè)直方圖數(shù)組H2:第二個(gè)直方圖數(shù)組(與第一個(gè)緯度相同)method:所使用的方式

該函數(shù)返回一個(gè)[0,1]的相似度值,值越接近一就表名相似度越高。

3.相似度參數(shù)微調(diào)
由于compareHist函數(shù)返回一個(gè)[0,1]的值,需要自己調(diào)整一個(gè)閾值來(lái)選取哪些合格,經(jīng)過(guò)調(diào)整后,發(fā)現(xiàn)閾值取[0.90, 0.95]能夠正確選取與實(shí)驗(yàn)的結(jié)果,代碼中取的是0.95,即待檢測(cè)圖與原圖之間的相似度如果小于0.95則不合格。

4.通過(guò)plot顯示原圖與待檢測(cè)圖的關(guān)系折線
參考鏈接
通過(guò)calcHist函數(shù)返回的hist數(shù)組值,運(yùn)用matplotlib繪制原圖和待檢測(cè)圖之間的關(guān)系折線圖。對(duì)比兩個(gè)曲線的差異。

到此這篇關(guān)于Python opencv缺陷檢測(cè)的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)opencv缺陷檢測(cè)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python命名空間與作用域深入全面詳解

    Python命名空間與作用域深入全面詳解

    命名空間是從名稱到對(duì)象的映射,大部分的命名空間都是通過(guò) Python 字典來(lái)實(shí)現(xiàn)的,作用域就是一個(gè)可以直接訪問(wèn)命名空間的正文區(qū)域。程序的變量并不是在哪個(gè)位置都可以訪問(wèn)的,訪問(wèn)權(quán)限決定于這個(gè)變量是在哪里賦值的
    2022-11-11
  • python爬蟲(chóng)之pyppeteer庫(kù)簡(jiǎn)單使用

    python爬蟲(chóng)之pyppeteer庫(kù)簡(jiǎn)單使用

    Puppeteer 是 Google 基于 Node.js 開(kāi)發(fā)的一個(gè)工具,有了它我們可以通過(guò) JavaScript 來(lái)控制 Chrome 瀏覽器的一些操作,當(dāng)然也可以用作網(wǎng)絡(luò)爬蟲(chóng)上,其 API 極其完善,功能非常強(qiáng)大
    2021-07-07
  • python shutil.move移動(dòng)文件或目錄方式

    python shutil.move移動(dòng)文件或目錄方式

    `shutil.move()`函數(shù)可以移動(dòng)文件或目錄,移動(dòng)目錄時(shí),如果目標(biāo)目錄不存在,會(huì)創(chuàng)建該目錄并將源目錄內(nèi)容移動(dòng)到新目錄;如果目標(biāo)目錄存在,則將源目錄移動(dòng)到目標(biāo)目錄下,移動(dòng)文件時(shí),如果目標(biāo)路徑是目錄,則將文件移動(dòng)到該目錄下并重命名
    2024-12-12
  • 在python3中使用shuffle函數(shù)要注意的地方

    在python3中使用shuffle函數(shù)要注意的地方

    今天小編就為大家分享一篇在python3中使用shuffle函數(shù)要注意的地方,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-02-02
  • Windows下PyCharm安裝圖文教程

    Windows下PyCharm安裝圖文教程

    這篇文章主要為大家詳細(xì)介紹了Windows下PyCharm安裝圖文教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-08-08
  • 教你用Python pygame設(shè)置窗口標(biāo)題和圖標(biāo)

    教你用Python pygame設(shè)置窗口標(biāo)題和圖標(biāo)

    今天給大家?guī)?lái)的是關(guān)于Python的相關(guān)知識(shí),文章圍繞著用Python pygame設(shè)置窗口標(biāo)題和圖標(biāo)展開(kāi),文中有非常詳細(xì)的介紹及代碼示例,需要的朋友可以參考下
    2021-06-06
  • Python可視化神器pyecharts繪制儀表盤

    Python可視化神器pyecharts繪制儀表盤

    這篇文章主要介紹了Python可視化神器pyecharts繪制儀表盤,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的朋友可以參考一下
    2022-07-07
  • 8個(gè)python新手入門項(xiàng)目

    8個(gè)python新手入門項(xiàng)目

    文將介紹8個(gè)帶有代碼的Python項(xiàng)目,這些項(xiàng)目將幫助大家增強(qiáng)編程能力,這些項(xiàng)目涵蓋了各種主題和難度級(jí)別,助力大家成長(zhǎng)為一個(gè)Python開(kāi)發(fā)者
    2024-01-01
  • 基于Python實(shí)現(xiàn)拆分和合并GIF動(dòng)態(tài)圖

    基于Python實(shí)現(xiàn)拆分和合并GIF動(dòng)態(tài)圖

    這篇文章主要介紹了Python拆分和合并GIF動(dòng)態(tài)圖,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-10-10
  • Python pymysql向SQL語(yǔ)句中傳參的多種方法

    Python pymysql向SQL語(yǔ)句中傳參的多種方法

    這篇文章主要介紹了Python-pymysql如何向SQL語(yǔ)句中傳參,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-05-05

最新評(píng)論

新晃| 新平| 虎林市| 秀山| 鹿泉市| 莲花县| 瑞昌市| 灌南县| 讷河市| 文安县| 怀宁县| 淅川县| 邯郸县| 日土县| 林芝县| 栾川县| 玉屏| 连平县| 铜山县| 华蓥市| 芮城县| 红原县| 博野县| 阿坝| 郯城县| 赫章县| 霍林郭勒市| 洪湖市| 巩义市| 洪泽县| 惠州市| 富宁县| 湖口县| 陆川县| 沙田区| 黑龙江省| 公主岭市| 泰和县| 镇宁| 库伦旗| 新民市|