欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

opencv實(shí)現(xiàn)礦石圖片檢測(cè)礦石數(shù)量

 更新時(shí)間:2022年08月01日 15:34:54   作者:Silencer_s  
這篇文章主要為大家詳細(xì)介紹了opencv實(shí)現(xiàn)礦石圖片檢測(cè)礦石數(shù)量,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了opencv礦石圖片檢測(cè)礦石數(shù)量的具體代碼,供大家參考,具體內(nèi)容如下

原始礦石圖片

此類圖片是高躁圖,二值化后圖像如下

采用膨脹的方法去除黑色噪點(diǎn)

二值圖黑白轉(zhuǎn)化dilateImg = 255 - dilateImg #黑白轉(zhuǎn)換

全部代碼如下:

import cv2 ?
import numpy as np
import matplotlib.pyplot as plt
import pywt

"""原始圖像導(dǎo)入""" ? ? ?
img = cv2.imread("000166.jpg") ?
#img = cv2.resize(img, (1600, 896))
#cv2.imshow("original", img)
"""轉(zhuǎn)化為灰度圖像"""
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)?
#cv2.imshow("gray", gray)

"""轉(zhuǎn)化為二值圖像
#dst0 = cv2.adaptiveThreshold(gray,255,cv2.ADAPTIVE_THRESH_MEAN_C,cv2.THRESH_BINARY,251, 1)
cv2.imshow("black&white", dst0)"""

"""圖像去躁
denose = cv2.fastNlMeansDenoising(gray,None,100,7,21)
cv2.imshow("denosing", denose)"""

"""小波圖像去躁
coeffs = pywt.dwt2(gray, 'haar')
cA1,(cH1, cV1, cD1) = coeffs
cD1 = np.zeros(cD1.shape) + 255
coeffs = cA1,(cH1, cV1, cD1)
denose = pywt.idwt2(coeffs, 'haar')
cv2.imshow("denose", denose)"""

"""轉(zhuǎn)化為二值圖像"""
dst1 = cv2.adaptiveThreshold(gray,255,cv2.ADAPTIVE_THRESH_MEAN_C,cv2.THRESH_BINARY,251, 1)
cv2.imshow("black&white", dst1)

"""膨脹用于排除小型黑洞"""
kernel = cv2.getStructuringElement(cv2.MORPH_RECT,(6,6)) ? #(此矩陣有關(guān)于黑點(diǎn)、噪點(diǎn)的去除)
dilateImg = cv2.dilate(dst1, kernel)
#erodImg = cv2.erode(dilateImg, kernel)
cv2.imshow("erodImg&wdilateImg",dilateImg)


"""計(jì)算數(shù)目"""
dilateImg = 255 - dilateImg #黑白轉(zhuǎn)換
imgs,contours,hierarchy = cv2.findContours(dilateImg,cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE) ?#輪廓檢測(cè)函數(shù)
cv2.drawContours(dilateImg,contours,-1,(120,0,0),2) ?#繪制輪廓
cv2.imshow("calcuate",dilateImg)

count=0 #礦石總數(shù)
ares_avrg=0 ?#礦石平均
#遍歷找到的所有礦石
for cont in contours:
? ? ares = cv2.contourArea(cont)#計(jì)算包圍形狀的面積
? ? if ares<50: ? #過(guò)濾面積小于50的形狀
? ? ? ? continue
? ? count+=1 ? ?#總體計(jì)數(shù)加1
? ? ares_avrg+=ares
? ? print("{}-blob:{}".format(count,ares),end=" ?") #打印出每個(gè)礦石的面積
? ? rect = cv2.boundingRect(cont) #提取矩形坐標(biāo)
? ? print("x:{} y:{}".format(rect[0],rect[1]))#打印坐標(biāo)
? ? #cv2.rectangle返回值是x,y,w,h
? ? cv2.rectangle(img,(rect[0],rect[1]),(rect[0]+rect[2],rect[1]+rect[3]),(0,0,0xff),1)#繪制矩形
? ? y=10 if rect[1]<10 else rect[1] #防止編號(hào)到圖片之外
? ? cv2.putText(img,str(count), (rect[0], y), cv2.FONT_HERSHEY_COMPLEX, 1, (0, 255, 0), 3) #在礦石左上角寫上編號(hào)
print("礦石平均面積:{}".format(round(ares_avrg/ares,2))) #打印出每個(gè)礦石的面積
print(count)
cv2.imshow("original", img)

cv2.waitKey()
#cv2.destroyAllWindows() # important part!

本來(lái)想用小波去躁,把HH全置255(看你目標(biāo)是用黑還是白表示,此處用黑色表示),效果不太好,只能選膨脹來(lái)搞了。

最后的結(jié)果如下:(話說(shuō)結(jié)果圖沒(méi)什么不能拖動(dòng)縮放呢- -。)

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python 解決相對(duì)路徑問(wèn)題:

    Python 解決相對(duì)路徑問(wèn)題:"No such file or directory"

    這篇文章主要介紹了Python 解決相對(duì)路徑問(wèn)題:"No such file or directory"具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-06-06
  • 小結(jié)Python用fork來(lái)創(chuàng)建子進(jìn)程注意事項(xiàng)

    小結(jié)Python用fork來(lái)創(chuàng)建子進(jìn)程注意事項(xiàng)

    今天看到別人的源代碼中有 fork 子進(jìn)程來(lái)操作數(shù)據(jù)。但是由于 fork 之后,沒(méi)有及時(shí)的退出,導(dǎo)致系統(tǒng)中的Python進(jìn)程越來(lái)越多,子進(jìn)程越來(lái)越多了。
    2014-07-07
  • Python?輕松實(shí)現(xiàn)可視化大屏

    Python?輕松實(shí)現(xiàn)可視化大屏

    對(duì)于從事數(shù)據(jù)領(lǐng)域的小伙伴來(lái)說(shuō),當(dāng)需要闡述自己觀點(diǎn)、展示項(xiàng)目成果時(shí),我們需要在最短時(shí)間內(nèi)讓別人知道你的想法。我相信單調(diào)乏味的語(yǔ)言很難讓別人快速理解。最直接有效的方式就是將數(shù)據(jù)進(jìn)行可視化展現(xiàn)
    2022-01-01
  • Python內(nèi)存管理方式和垃圾回收算法解析

    Python內(nèi)存管理方式和垃圾回收算法解析

    這篇文章主要介紹了Python內(nèi)存管理方式和垃圾回收算法解析,介紹了傳統(tǒng)的垃圾回收機(jī)制,其工作方法,finalizer的問(wèn)題等相關(guān)內(nèi)容,具有一定參考價(jià)值,需要的朋友可以了解下。
    2017-11-11
  • Python 實(shí)現(xiàn)靜態(tài)鏈表案例詳解

    Python 實(shí)現(xiàn)靜態(tài)鏈表案例詳解

    這篇文章主要介紹了Python 實(shí)現(xiàn)靜態(tài)鏈表案例詳解,本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-09-09
  • python執(zhí)行js代碼的方法

    python執(zhí)行js代碼的方法

    現(xiàn)在為了防止反爬,前端使用的反爬技術(shù)比較多的是js代碼混淆。python作為爬蟲(chóng)界的扛把子,免不了和js打交道,因此我們需要了解如何使用Python執(zhí)行js代碼
    2021-05-05
  • Python實(shí)現(xiàn)矩陣轉(zhuǎn)置的幾種方法詳解

    Python實(shí)現(xiàn)矩陣轉(zhuǎn)置的幾種方法詳解

    這篇文章主要介紹了Python實(shí)現(xiàn)矩陣轉(zhuǎn)置的幾種方法詳解,zip() 函數(shù)用于將可迭代的對(duì)象作為參數(shù),將對(duì)象中對(duì)應(yīng)的元素打包成一個(gè)個(gè)元組,然后返回由這些元組組成的對(duì)象,這樣做的好處是節(jié)約了不少的內(nèi)存,需要的朋友可以參考下
    2023-08-08
  • Python自定義主從分布式架構(gòu)實(shí)例分析

    Python自定義主從分布式架構(gòu)實(shí)例分析

    這篇文章主要介紹了Python自定義主從分布式架構(gòu),結(jié)合實(shí)例形式分析了主從分布式架構(gòu)的結(jié)構(gòu)、原理與具體的代碼實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2016-09-09
  • Python 從一個(gè)文件中調(diào)用另一個(gè)文件的類方法

    Python 從一個(gè)文件中調(diào)用另一個(gè)文件的類方法

    今天小編就為大家分享一篇Python 從一個(gè)文件中調(diào)用另一個(gè)文件的類方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-01-01
  • 淺析python,PyCharm,Anaconda三者之間的關(guān)系

    淺析python,PyCharm,Anaconda三者之間的關(guān)系

    Python是一種跨平臺(tái)的計(jì)算機(jī)程序設(shè)計(jì)語(yǔ)言,簡(jiǎn)單來(lái)說(shuō),python就是類似于C,Java,C++等,一種編程語(yǔ)言。這篇文章主要介紹了淺析python,PyCharm,Anaconda三者之間的關(guān)系,需要的朋友可以參考下
    2019-11-11

最新評(píng)論