久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

使用Python進行圖像分割和對象計數(shù)實例

 taotao_2016 2020-05-10

讓我們以一個簡單的場景為例,,在該場景中我們有一個檸檬圖像,我們想要對其中的檸檬進行分割和計數(shù),。

使用Python進行圖像分割和對象計數(shù)實例

圖像分割算法有分水嶺算法,、斑點計數(shù)算法、霍夫圓/橢圓算法,、輪廓檢測算法等,。在本文中,我使用了輪廓檢測和分水嶺算法,。

涉及的步驟:

  • 讀取圖像
  • 轉(zhuǎn)換為HSV
  • 閾值
  • 模糊它
  • 刪除多余/不需要的區(qū)域
  • 在原始圖像上繪制輪廓
  • 使用分水嶺來檢測分離輪廓
  • 進行平均分水嶺和輪廓檢測以獲得滿意的結(jié)果,。

首先,我們導(dǎo)入一些常見的Python依賴項,。

from __future__ import print_functionimport numpy as npimport cv2import matplotlib.pyplot as plt%matplotlib inlinefrom skimage import iofrom skimage.morphology import watershedfrom skimage.feature import peak_local_maxfrom scipy import ndimage

我們創(chuàng)建一個Python函數(shù)以可視化圖像,。Python代碼如下:

def show(img):    plt.imshow(img)    plt.show()

現(xiàn)在,我們讀取圖像,。

#loadfp = 'lemons1.jpg'img = cv2.imread(fp)show(img)print(img.shape)

使用Python進行圖像分割和對象計數(shù)實例

現(xiàn)在,,我們對圖像進行預(yù)處理。步驟包括:

  • HSV,,這是人眼感知的顏色模型,。
  • 閾值技術(shù),通過選定的閾值像素強度將圖像轉(zhuǎn)換為二值圖像(即只有2個像素值(0或255)),。
  • 模糊圖像,,以刪除圖像中不必要的斑點。
#preprocessing the imagehsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)show(hsv)h, s, v = cv2.split(hsv)show(s)_, thr = cv2.threshold(s, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)show(thr)blur = cv2.medianBlur(thr, 5)show(blur)

現(xiàn)在我們使用輪廓檢測,在我們“模糊”的圖像中找到檸檬,。為了去除小的和無關(guān)緊要的輪廓,,我們只選擇那些面積大于2000的輪廓(任意值,是超參數(shù)),。

contours, hierarchy = cv2.findContours(blur,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)copy2 = img.copy()count = []for x in contours: area = cv2.contourArea(x) if area > 2000 : count.append(x)cv2.drawContours(copy2, count, -1, (255,0,0), 3)show(copy2)print('number of lemons found via contour detection = ', len(count))

現(xiàn)在我們使用分水嶺算法來分離相互接觸的檸檬(如果有的話),。

copy3 = img.copy()D = ndimage.distance_transform_edt(thr)localMax = peak_local_max(D, indices=False, min_distance=70,	labels=thr)markers = ndimage.label(localMax, structure=np.ones((3, 3)))[0]labels = watershed(-D, markers, mask=thr)ws = len(np.unique(labels)) -1copy3[labels == -1] = [255,0,0]print('no. of lemons found via watershed algorithm = ', ws)

最后我們?nèi)煞N方法的平均值并打印結(jié)果。

ans = int((len(count) + len(np.unique(labels)) -1) / 2)print('number of lemon segments detected = ', ans)show(copy2)

使用Python進行圖像分割和對象計數(shù)實例

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購買等信息,,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請點擊一鍵舉報,。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多