久久r热视频,国产午夜精品一区二区三区视频,亚洲精品自拍偷拍,欧美日韩精品二区

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

python 基于opencv 繪制圖像輪廓

瀏覽:4日期:2022-07-02 13:23:32
圖像輪廓概念

輪廓是一系列相連的點(diǎn)組成的曲線,代表了物體的基本外形。談起輪廓不免想到邊緣,它們確實(shí)很像。簡(jiǎn)單的說(shuō),輪廓是連續(xù)的,邊緣并不全都連續(xù)(下圖)。其實(shí)邊緣主要是作為圖像的特征使用,比如可以用邊緣特征可以區(qū)分臉和手;而輪廓主要用來(lái)分析物體的形態(tài),比如物體的周長(zhǎng)和面積等,可以說(shuō)邊緣包括輪廓。

python 基于opencv 繪制圖像輪廓

尋找輪廓的操作一般用于二值圖像,所以通常會(huì)使用閾值分割或Canny邊緣檢測(cè)先得到二值圖。

注意:尋找輪廓是針對(duì)白色物體的,一定要保證物體是白色,而背景是黑色,不然很多人在尋找輪廓時(shí)會(huì)找到圖片最外面的一個(gè)框。

opencv找出圖像輪廓使用cv.findContours()尋找輪廓:

import cv2 as cvimport numpy as npimg = cv.imread(’j.png’)img_gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY)ret, thresh = cv.threshold(img_gray, 0, 255, cv.THRESH_BINARY_INV + cv.THRESH_OTSU)# 尋找二值圖像的輪廓contours, hierarchy = cv.findContours( thresh, cv.RETR_TREE, cv.CHAIN_APPROX_SIMPLE)print(len(contours)) 參數(shù)2:輪廓的查找方式,一般使用cv.RETR_TREE,表示提取所有的輪廓并建立輪廓間的層級(jí)。 參數(shù)3:輪廓的近似方法。比如對(duì)于一條直線,我們可以存儲(chǔ)該直線的所有像素點(diǎn),也可以只存儲(chǔ)起點(diǎn)和終點(diǎn)。使用cv.CHAIN_APPROX_SIMPLE就表示用盡可能少的像素點(diǎn)表示輪廓。 簡(jiǎn)便起見(jiàn),這兩個(gè)參數(shù)也可以直接用真值3和2表示。 函數(shù)有2個(gè)返回值,hierarchy是輪廓間的層級(jí)關(guān)系,這個(gè)不用理會(huì)。我們主要看contours,它就是找到的輪廓了,以鏈表形式存儲(chǔ),記錄了每條輪廓的所有像素點(diǎn)的坐標(biāo)(x,y)。

python 基于opencv 繪制圖像輪廓

opencv繪制圖像輪廓

輪廓找出來(lái)后,可以像圖中那樣用紅色畫出來(lái):cv.drawContours()

cv.drawContours(img, contours, -1, (0, 0, 255), 2)其中參數(shù)2就是得到的contours,參數(shù)3表示要繪制哪一條輪廓,-1表示繪制所有輪廓,參數(shù)4是顏色(B/G/R通道,所以(0,0,255)表示紅色),參數(shù)5是線寬。

經(jīng)驗(yàn)之談:很多人畫圖時(shí)明明用了彩色,但沒(méi)有效果,請(qǐng)檢查你是在哪個(gè)圖上畫,畫在灰度圖和二值圖上顯然是沒(méi)有彩色的。

一般情況下,我們會(huì)首先獲得要操作的輪廓,再進(jìn)行輪廓繪制及分析:cnt = contours[1]cv.drawContours(img, [cnt], 0, (0, 0, 255), 2)

實(shí)驗(yàn):找出并繪制圖像輪廓

import cv2 as cvimport numpy as npimg = cv.imread(’jiao.jpg’)img_gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY)ret, thresh = cv.threshold(img_gray, 0, 255, cv.THRESH_BINARY_INV + cv.THRESH_OTSU)# 尋找二值圖像的輪廓contours, hierarchy = cv.findContours( thresh, cv.RETR_TREE, cv.CHAIN_APPROX_SIMPLE)cnt = contours[1:6]cv.drawContours(img, cnt, -1, (0, 0, 255), 2)cv.imshow(’result’,img)cv.waitKey(0)cv.destroyAllWindows()實(shí)驗(yàn)結(jié)果

python 基于opencv 繪制圖像輪廓

以上就是python 基于opencv 繪制圖像輪廓的詳細(xì)內(nèi)容,更多關(guān)于python 繪制圖像輪廓的資料請(qǐng)關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: Python 編程
相關(guān)文章:
主站蜘蛛池模板: 漳州市| 靖安县| 新沂市| 上饶市| 苍梧县| 汤原县| 鄂温| 同仁县| 五寨县| 舞阳县| 高州市| 华安县| 曲沃县| 贵定县| 红原县| 黑河市| 汝城县| 芮城县| 曲麻莱县| 冕宁县| 景谷| 东港市| 比如县| 威信县| 迁西县| 茂名市| 吴忠市| 年辖:市辖区| 绥化市| 宝山区| 南昌市| 洛浦县| 大宁县| 晋城| 西充县| 镇康县| 东乡族自治县| 金昌市| 聊城市| 定日县| 永善县|