最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python Opencv實(shí)現(xiàn)圖像輪廓識(shí)別功能

 更新時(shí)間:2020年03月23日 15:54:54   作者:戲志才  
這篇文章主要為大家詳細(xì)介紹了Python Opencv實(shí)現(xiàn)圖像輪廓識(shí)別功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了python opencv識(shí)別圖像輪廓的具體代碼,供大家參考,具體內(nèi)容如下

要求:用矩形或者圓形框住圖片中的云朵(不要求全部框出)

輪廓檢測(cè)

Opencv-Python接口中使用cv2.findContours()函數(shù)來(lái)查找檢測(cè)物體的輪廓。

import cv2

img = cv2.imread('cloud.jpg')
# 灰度圖像
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 二值化
ret, binary = cv2.threshold(gray, 175, 255, cv2.THRESH_BINARY)
img1, contours, hierarchy = cv2.findContours(binary, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)

# 以圓形框出云朵
# for i in range(len(contours)):
# (x, y), radius = cv2.minEnclosingCircle(contours[i])
# center = (int(x), int(y))
# radius = int(radius)
# img = cv2.circle(img, center, radius, (0, 255, 0), 2)

#以云朵邊界輪廓框出云朵
cv2.drawContours(img, contours, -1, (0, 0, 255), 3)

cv2.imshow("img", img)
cv2.waitKey(0)

需要注意的是cv2.findContours()函數(shù)接受的參數(shù)為二值圖,即黑白的(不是灰度圖),所以讀取的圖像要先轉(zhuǎn)成灰度的,再轉(zhuǎn)成二值圖。

cv2.findContours()函數(shù)

函數(shù)的原型為:

cv2.findContours(image, mode, method[, contours[, hierarchy[, offset ]]]) 

返回兩個(gè)值:contours,hierarchy。注:opencv3會(huì)返回三個(gè)值,分別是img, countours, hierarchy

參數(shù)說(shuō)明

第一個(gè)參數(shù)是尋找輪廓的圖像
第二個(gè)參數(shù)表示輪廓的檢索模式,有四種:
1. cv2.RETR_EXTERNAL表示只檢測(cè)外輪廓
2. cv2.RETR_LIST檢測(cè)的輪廓不建立等級(jí)關(guān)系
3. cv2.RETR_CCOMP建立兩個(gè)等級(jí)的輪廓,上面的一層為外邊界,里面的一層為內(nèi)孔的邊界信息。如果內(nèi)孔內(nèi)還有一個(gè)連通物體,這個(gè)物體的邊界也在頂層。
4. cv2.RETR_TREE建立一個(gè)等級(jí)樹(shù)結(jié)構(gòu)的輪廓。
第三個(gè)參數(shù)method為輪廓的近似辦法
cv2.CHAIN_APPROX_NONE存儲(chǔ)所有的輪廓點(diǎn),相鄰的兩個(gè)點(diǎn)的像素位置差不超過(guò)1,
即max(abs(x1−x2),abs(y2−y1))==1max(abs(x1−x2),abs(y2−y1))==1
cv2.CHAIN_APPROX_SIMPLE壓縮水平方向,垂直方向,對(duì)角線方向的元素,只保留該方向的終點(diǎn)坐標(biāo),例如一個(gè)矩形輪廓只需4個(gè)點(diǎn)來(lái)保存輪廓信息
cv2.CHAIN_APPROX_TC89_L1,CV_CHAIN_APPROX_TC89_KCOS使用teh-Chinl chain 近似算法

返回值

cv2.findContours()函數(shù)返回兩個(gè)值,一個(gè)是輪廓本身,還有一個(gè)是每條輪廓對(duì)應(yīng)的屬性。

contour返回值

cv2.findContours()函數(shù)首先返回一個(gè)list,list中每個(gè)元素都是圖像中的一個(gè)輪廓,用numpy中的ndarray表示。這個(gè)概念非常重要。在下面drawContours中會(huì)看見(jiàn)??梢源蛴∮^察contours的數(shù)據(jù)類型。

print (type(contours)) 
print (type(contours[0])) 
print (len(contours)) 

hierarchy返回值

該函數(shù)還可返回一個(gè)可選的hiararchy結(jié)果,這是一個(gè)ndarray,其中的元素個(gè)數(shù)和輪廓個(gè)數(shù)相同,每個(gè)輪廓contours[i]對(duì)應(yīng)4個(gè)hierarchy元素hierarchy[i][0] ~hierarchy[i][3],分別表示后一個(gè)輪廓、前一個(gè)輪廓、父輪廓、內(nèi)嵌輪廓的索引編號(hào),如果沒(méi)有對(duì)應(yīng)項(xiàng),則該值為負(fù)數(shù)。

輪廓的繪制

OpenCV中通過(guò)cv2.drawContours在圖像上繪制輪廓。

cv2.drawContours(image, contours, contourIdx, color[, thickness[, lineType[, hierarchy[, maxLevel[, offset ]]]]]) 

第一個(gè)參數(shù)是指明在哪幅圖像上繪制輪廓;
第二個(gè)參數(shù)是輪廓本身,在Python中是一個(gè)list;
第三個(gè)參數(shù)指定繪制輪廓list中的哪條輪廓,如果是-1,則繪制其中的所有輪廓。
后面的參數(shù)很簡(jiǎn)單。其中thickness表明輪廓線的寬度,如果是-1(cv2.FILLED),則為填充模式。

OpenCV中通過(guò)cv2.minEnclosingCircle()可以幫我們找到一個(gè)對(duì)象的外接圓。它是所有能夠包括對(duì)象的圓中面積最小的一個(gè)。

(x,y),radius = cv2.minEnclosingCircle(contours[i])
center = (int(x),int(y))
radius = int(radius)
img = cv2.circle(img,center,radius,(0,255,0),2)

本文已被收錄到專題《python圖片處理操作》 ,歡迎大家點(diǎn)擊學(xué)習(xí)更多精彩內(nèi)容。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 圖文詳解OpenCV中光流以及視頻特征點(diǎn)追蹤

    圖文詳解OpenCV中光流以及視頻特征點(diǎn)追蹤

    光流是空間運(yùn)動(dòng)物體在觀察成像平面上的像素運(yùn)動(dòng)的瞬時(shí)速度,是利用圖像序列中像素在時(shí)間域上的變化以及相鄰幀之間的相關(guān)性來(lái)找到上一幀跟當(dāng)前幀之間存在的相應(yīng)關(guān)系,這篇文章主要給大家介紹了關(guān)于OpenCV中光流以及視頻特征點(diǎn)追蹤的相關(guān)資料,需要的朋友可以參考下
    2021-08-08
  • jupyter notebook中美觀顯示矩陣實(shí)例

    jupyter notebook中美觀顯示矩陣實(shí)例

    這篇文章主要介紹了jupyter notebook中美觀顯示矩陣實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-04-04
  • Python解析json之ValueError: Expecting property name enclosed in double quotes: line 1 column 2(char 1)

    Python解析json之ValueError: Expecting property name enclosed in

    這篇文章主要給大家介紹了關(guān)于Python解析json報(bào)錯(cuò):ValueError: Expecting property name enclosed in double quotes: line 1 column 2(char 1)的解決方法,文中介紹的非常詳細(xì),需要的朋友們可以參考借鑒,下面來(lái)一起看看吧。
    2017-07-07
  • Python編程快速上手——選擇性拷貝操作案例分析

    Python編程快速上手——選擇性拷貝操作案例分析

    這篇文章主要介紹了Python選擇性拷貝操作,結(jié)合具體實(shí)例形式分析了Python文件遍歷、查找、復(fù)制拷貝等相關(guān)操作技巧,需要的朋友可以參考下
    2020-02-02
  • python使用numpy中的size()函數(shù)實(shí)例用法詳解

    python使用numpy中的size()函數(shù)實(shí)例用法詳解

    在本篇文章里小編給整理的是一篇關(guān)于python使用numpy中的size()函數(shù)實(shí)例用法詳解內(nèi)容,有興趣的朋友們可以學(xué)習(xí)下。
    2021-01-01
  • 完美解決pycharm導(dǎo)入自己寫(xiě)的py文件爆紅問(wèn)題

    完美解決pycharm導(dǎo)入自己寫(xiě)的py文件爆紅問(wèn)題

    今天小編就為大家分享一篇完美解決pycharm導(dǎo)入自己寫(xiě)的py文件爆紅問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-02-02
  • 使用Python和OpenCV檢測(cè)圖像中的物體并將物體裁剪下來(lái)

    使用Python和OpenCV檢測(cè)圖像中的物體并將物體裁剪下來(lái)

    這篇文章主要介紹了使用Python和OpenCV檢測(cè)圖像中的物體并將物體裁剪下來(lái),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-10-10
  • 在Python中比較列表中的相鄰元素的幾種方法

    在Python中比較列表中的相鄰元素的幾種方法

    在Python中,我們可以通過(guò)多種方式來(lái)對(duì)比列表中的相鄰項(xiàng),我們沒(méi)有看到任何直接或間接的應(yīng)用程序來(lái)比較相鄰的元素,例如確定最近的趨勢(shì),優(yōu)化用戶體驗(yàn),股票市場(chǎng)分析等等,本文將探討在Python中如何比較列表中的相鄰元素的幾種方法,需要的朋友可以參考下
    2025-01-01
  • windows系統(tǒng)中Python多版本與jupyter notebook使用虛擬環(huán)境的過(guò)程

    windows系統(tǒng)中Python多版本與jupyter notebook使用虛擬環(huán)境的過(guò)程

    這篇文章主要介紹了windows中Python多版本與jupyter notebook中使用虛擬環(huán)境的安裝過(guò)程,本文分步驟給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值 ,需要的朋友可以參考下
    2019-05-05
  • python?爬取豆瓣電影短評(píng)并利用wordcloud生成詞云圖

    python?爬取豆瓣電影短評(píng)并利用wordcloud生成詞云圖

    這篇文章主要介紹了python?爬取豆瓣電影短評(píng)并利用wordcloud生成詞云圖,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-06-06

最新評(píng)論

鹤岗市| 徐汇区| 衡阳县| 星座| 广宗县| 衢州市| 克拉玛依市| 永年县| 达州市| 博罗县| 卢湾区| 汕尾市| 扬中市| 榕江县| 梁平县| 鄂托克旗| 安平县| 都江堰市| 京山县| 油尖旺区| 鹿邑县| 大名县| 秦皇岛市| 宁阳县| 谢通门县| 九江市| 通榆县| 凤山县| 临潭县| 抚宁县| 安仁县| 盐亭县| 汨罗市| 钦州市| 惠东县| 航空| 萍乡市| 伊金霍洛旗| 忻城县| 辉南县| 灵山县|