xxxx18一60岁hd中国/日韩女同互慰一区二区/西西人体扒开双腿无遮挡/日韩欧美黄色一级片 - 色护士精品影院www

資源簡(jiǎn)介

圖形識(shí)別代碼,可以識(shí)別多種顏色與形狀,還可以計(jì)算面積與周長(zhǎng),形狀包括三角形,正方形,長(zhǎng)方形,梯形,平行四邊形,菱形,其他四邊形,五邊形,五角星,六邊形和其他多邊形,橢圓,圓等,顏色包括藍(lán)色,紫色,紅色,橙色等 python,opencv。如果沒(méi)有辦法運(yùn)行,請(qǐng)私信我。

資源截圖

代碼片段和文件信息

import?cv2?as?cv
import?numpy?as?np
import?math
“““
????功能:實(shí)現(xiàn)多種幾何圖形的形狀及顏色的識(shí)別,并計(jì)算面積及周長(zhǎng)
????可以識(shí)別的圖形:三角形,任意四邊形(梯形,平行四邊形,菱形,正方形,矩形,不特殊四邊形),
????????????????????五邊形,五角星,六邊形,多邊形,橢圓,半圓,圓
????可以識(shí)別的顏色:紅色,綠色,藍(lán)色,黃色,黑色,紫色,橙色,白色
????除了定義的可識(shí)別顏色外,其他返回其對(duì)應(yīng)的rgb值,提示用戶根據(jù)rgb值去找尋相應(yīng)顏色?????????????????
????除了定義的可識(shí)別圖形外,其他為未定義的圖形??
“““
noise_b?=?0.5


class?ShapeAnalysis:
????def?__init__(self):
????????self.shapes?=?{‘triangle‘:?0
???????????????????????‘quadrilateral‘:?0?‘trapezium‘:?0?‘parallelogram‘:?0
???????????????????????‘rectangle‘:?0?‘rhombus‘:?0?‘square‘:?0
???????????????????????‘pentagon‘:?0?‘pentagram‘:?0?‘hexagon‘:?0
???????????????????????‘polygons‘:?0?‘ellipse‘:?0?‘circle‘:?0
???????????????????????‘undefined‘:?0
???????????????????????}

????????self.colors?=?{‘white‘:?0?‘black‘:?0
???????????????????????‘red‘:?0?‘green‘:?0
???????????????????????‘blue‘:?0?‘yellow‘:?0
???????????????????????‘orange‘:?0?‘purple‘:?0
???????????????????????‘others‘:?0
???????????????????????}

????def?analysis(self?frame):
????????self.re_strover?=?‘識(shí)別結(jié)果:\n‘
????????h?w?ch?=?frame.shape??#?獲取圖形信息
????????result?=?np.zeros((h?w?ch)?dtype=np.uint8)??#?生成跟圖形相同大小的矩陣
????????cv.imshow(“input?image“?frame)

????????#?二值化圖像
????????print(‘start?to?binary?image?and?detect?edges...\n‘)
????????gray?=?cv.cvtColor(frame?cv.COLOR_BGR2GRAY)
????????#?threshold:固定閾值二值化?ret?dst輸出圖?=?cv2.threshold(src輸入圖?thresh閾值?maxval?type)
????????#?type:二值化操作的類型,包含以下5種類型:?cv2.THRESH_BINARY;
????????#?cv2.THRESH_BINARY_INV;?cv2.THRESH_TRUNC;?cv2.THRESH_TOZERO;cv2.THRESH_TOZERO_INV
????????#?adaptiveThreshold自適應(yīng)閾值二值化
????????ret?binary?=?cv.threshold(gray?0?255?cv.THRESH_BINARY_INV?|?cv.THRESH_OTSU)

????????#?函數(shù)cv2.findContours()有三個(gè)參數(shù)。第一個(gè)是輸入圖像,第二個(gè)是輪廓檢索模式,第三個(gè)是輪廓近似方法。
????????#?輪廓的點(diǎn)集(contours)[Next?Previous?First_Child?Parent]
????????#?各層輪廓的索引(hierarchy)
????????contours?hierarchy?=?cv.findContours(binary?cv.RETR_TREE?cv.CHAIN_APPROX_SIMPLE)
????????if?len(contours)?????????????print(‘there?is?nothing?can?be?detected!?Please?check?the?input?image.?Thanks!‘)
????????else:
????????????shape_numbers?=?0
????????????for?cnt?in?range(len(contours)):

????????????????#?通過(guò)計(jì)算周長(zhǎng)和面積來(lái)排除一些圖像干擾
????????????????#?計(jì)算面積與周長(zhǎng)
????????????????p?=?cv.arcLength(contours[cnt]?True)
????????????????area?=?cv.contourArea(contours[cnt])

????????????????if?area?>?noise_b?and?p?>?noise_b:??#?如果面積和周長(zhǎng)小于0.5判斷為噪聲干擾,不是圖形
????????????????????shape_numbers?+=?1???#?統(tǒng)計(jì)檢測(cè)到圖形

????????????????????#?為圖形,做統(tǒng)計(jì)分析
????????????????????cv.drawContours(result?contours?cnt?(0?255?0)?2)??#?畫(huà)出輪廓

????????????????????#?求解中心位置
????????????????????mm?=?cv.moments(contours[cnt])
????????????????????cx?=?int(mm[‘m10‘]?/?(mm[‘m00‘]?+?1e-12))
????????????????????cy?=?int(mm[‘m01‘]?/?(mm[‘m00‘]?+?1e-12))
????????????????????cv.circle(result?(cx?cy)?3?(0?0?255)?-1)

????????????????????#?獲取顏色信息
????????????????????color?=?fr

評(píng)論

共有 條評(píng)論