OpenCV定位輪廓的中點(diǎn)

本文將會(huì)用三個(gè)不同的示例說明用OpenCV如何進(jìn)行形狀的檢測(cè)與分析咐鹤。

從這三個(gè)示例中我們將會(huì)學(xué)到如何:

  1. 計(jì)算一個(gè)輪廓或圖形區(qū)域的中心點(diǎn)茎刚,這項(xiàng)小技能會(huì)在以后很多的OpenCV項(xiàng)目中將會(huì)非常實(shí)用胞谈。
  2. 識(shí)別不同的形狀股囊,例如圓形浓领,正方形反镇、矩形、三角形送火、橢圓等。
  3. 標(biāo)識(shí)形狀名稱
image

圖像中包含了太多對(duì)于我們這個(gè)示例中沒有意義信息先匪,我們的目標(biāo)是要從圖中檢測(cè)每個(gè)圖形的輪廓線并計(jì)算其中心點(diǎn)种吸,為了達(dá)到這個(gè)效果我們需要先對(duì)圖像進(jìn)行一些預(yù)處理:

  • 灰度化
  • 對(duì)圖像進(jìn)行模糊處理以減少輪廓邊緣出現(xiàn)的噪點(diǎn)
  • 二值化圖像,通常地邊緣檢測(cè)與讀取閥值需要進(jìn)行此過程
$ pip install imutils
import argparse
import imutils
import cv2
 
ap = argparse.ArgumentParser()
ap.add_argument("-i", "--image", required=True,
    help="path to the input image")
args = vars(ap.parse_args())
 
# 進(jìn)行灰度化得到二值圖
image = cv2.imread(args["image"])
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
blurred = cv2.GaussianBlur(gray, (5, 5), 0)
thresh = cv2.threshold(blurred, 60, 255, cv2.THRESH_BINARY)[1]

以下是上述代碼的輸出效果:

image

下一步就是調(diào)用OpenCV的findContour方法檢測(cè)灰度化圖片中的輪廓:

cnts = cv2.findContours(thresh.copy(), cv2.RETR_EXTERNAL,
    cv2.CHAIN_APPROX_SIMPLE)
cnts = cnts[0] if imutils.is_cv2() else cnts[1]

接下來就在每個(gè)輪廓上畫出一個(gè)突出的邊緣和標(biāo)出中心點(diǎn):

for c in cnts:
    # 獲取中心點(diǎn)
    M = cv2.moments(c)
    cX = int(M["m10"] / M["m00"])
    cY = int(M["m01"] / M["m00"])
 
    # 畫出輪廓和中點(diǎn)
    cv2.drawContours(image, [c], -1, (0, 255, 0), 2)
    cv2.circle(image, (cX, cY), 7, (255, 255, 255), -1)
    cv2.putText(image, "center", (cX - 20, cY - 20),
        cv2.FONT_HERSHEY_SIMPLEX, 0.5, (255, 255, 255), 2)
 
    #顯示圖像
    cv2.imshow("Image", image)
    cv2.waitKey(0)

上述代碼中cv2.moments()是用于計(jì)算圖像矩呀非,然后通過圖像矩計(jì)算質(zhì)心坚俗。以下是代碼的顯示效果:

image
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市岸裙,隨后出現(xiàn)的幾起案子猖败,更是在濱河造成了極大的恐慌,老刑警劉巖降允,帶你破解...
    沈念sama閱讀 211,290評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件恩闻,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡剧董,警方通過查閱死者的電腦和手機(jī)幢尚,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,107評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來翅楼,“玉大人尉剩,你說我怎么就攤上這事∫汶” “怎么了理茎?”我有些...
    開封第一講書人閱讀 156,872評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵,是天一觀的道長管嬉。 經(jīng)常有香客問我皂林,道長,這世上最難降的妖魔是什么蚯撩? 我笑而不...
    開封第一講書人閱讀 56,415評(píng)論 1 283
  • 正文 為了忘掉前任式撼,我火速辦了婚禮,結(jié)果婚禮上求厕,老公的妹妹穿的比我還像新娘著隆。我一直安慰自己扰楼,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,453評(píng)論 6 385
  • 文/花漫 我一把揭開白布美浦。 她就那樣靜靜地躺著弦赖,像睡著了一般。 火紅的嫁衣襯著肌膚如雪浦辨。 梳的紋絲不亂的頭發(fā)上蹬竖,一...
    開封第一講書人閱讀 49,784評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音流酬,去河邊找鬼币厕。 笑死,一個(gè)胖子當(dāng)著我的面吹牛芽腾,可吹牛的內(nèi)容都是我干的旦装。 我是一名探鬼主播,決...
    沈念sama閱讀 38,927評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼摊滔,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼阴绢!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起艰躺,我...
    開封第一講書人閱讀 37,691評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤呻袭,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后腺兴,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體左电,經(jīng)...
    沈念sama閱讀 44,137評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,472評(píng)論 2 326
  • 正文 我和宋清朗相戀三年页响,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了券腔。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,622評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡拘泞,死狀恐怖纷纫,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情陪腌,我是刑警寧澤辱魁,帶...
    沈念sama閱讀 34,289評(píng)論 4 329
  • 正文 年R本政府宣布,位于F島的核電站诗鸭,受9級(jí)特大地震影響染簇,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜强岸,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,887評(píng)論 3 312
  • 文/蒙蒙 一锻弓、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧蝌箍,春花似錦青灼、人聲如沸暴心。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽专普。三九已至,卻和暖如春弹沽,著一層夾襖步出監(jiān)牢的瞬間檀夹,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評(píng)論 1 265
  • 我被黑心中介騙來泰國打工策橘, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留炸渡,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,316評(píng)論 2 360
  • 正文 我出身青樓丽已,卻偏偏與公主長得像蚌堵,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子促脉,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,490評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容