真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

怎么在python中利用opencv對圖像的輪廓進(jìn)行繪制-創(chuàng)新互聯(lián)

今天就跟大家聊聊有關(guān)怎么在python中利用opencv對圖像的輪廓進(jìn)行繪制,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

目前成都創(chuàng)新互聯(lián)已為上千多家的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)絡(luò)空間、網(wǎng)站運(yùn)營、企業(yè)網(wǎng)站設(shè)計、荔波網(wǎng)站維護(hù)等服務(wù),公司將堅持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。

圖像輪廓概念

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

怎么在python中利用opencv對圖像的輪廓進(jìn)行繪制

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

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

opencv找出圖像輪廓

使用cv.findContours()尋找輪廓:

import cv2 as cv
import numpy as np

img = 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,表示提取所有的輪廓并建立輪廓間的層級。

  • 參數(shù)3:輪廓的近似方法。比如對于一條直線,我們可以存儲該直線的所有像素點,也可以只存儲起點和終點。使用cv.CHAIN_APPROX_SIMPLE就表示用盡可能少的像素點表示輪廓。

  • 簡便起見,這兩個參數(shù)也可以直接用真值3和2表示。

  • 函數(shù)有2個返回值,hierarchy是輪廓間的層級關(guān)系,這個不用理會。我們主要看contours,它就是找到的輪廓了,以鏈表形式存儲,記錄了每條輪廓的所有像素點的坐標(biāo)(x,y)。

怎么在python中利用opencv對圖像的輪廓進(jìn)行繪制

opencv繪制圖像輪廓

輪廓找出來后,可以像圖中那樣用紅色畫出來: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)驗之談:很多人畫圖時明明用了彩色,但沒有效果,請檢查你是在哪個圖上畫,畫在灰度圖和二值圖上顯然是沒有彩色的。

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

實驗:找出并繪制圖像輪廓

import cv2 as cv
import numpy as np

img = 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()

看完上述內(nèi)容,你們對怎么在python中利用opencv對圖像的輪廓進(jìn)行繪制有進(jìn)一步的了解嗎?如果還想了解更多知識或者相關(guān)內(nèi)容,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝大家的支持。


分享文章:怎么在python中利用opencv對圖像的輪廓進(jìn)行繪制-創(chuàng)新互聯(lián)
網(wǎng)頁地址:http://weahome.cn/article/csohci.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部