欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

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

輪廓檢測

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

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 ]]]) 

返回兩個值:contours,hierarchy。注:opencv3會返回三個值,分別是img, countours, hierarchy

參數(shù)說明

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

返回值

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

contour返回值

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

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

hierarchy返回值

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

輪廓的繪制

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

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

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

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

(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圖片處理操作》 ,歡迎大家點擊學(xué)習(xí)更多精彩內(nèi)容。

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

相關(guān)文章

  • 淺析python標(biāo)準(zhǔn)庫中的glob

    淺析python標(biāo)準(zhǔn)庫中的glob

    glob 文件名模式匹配,不用遍歷整個目錄判斷每個文件是不是符合。這篇文章主要介紹了python標(biāo)準(zhǔn)庫中的glob的相關(guān)知識,本文通過實例代碼給大家介紹的非常詳細,需要的朋友可以參考下
    2020-03-03
  • 運行tensorflow python程序,限制對GPU和CPU的占用操作

    運行tensorflow python程序,限制對GPU和CPU的占用操作

    今天小編就為大家分享一篇運行tensorflow python程序,限制對GPU和CPU的占用操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-02-02
  • Python交換變量

    Python交換變量

    Python美味第一頓,來個方便快捷的變量交換!為什么是Python?!因為Python中交換變量不需要臨時變量!
    2008-09-09
  • 如何基于python生成list的所有的子集

    如何基于python生成list的所有的子集

    這篇文章主要介紹了如何基于python生成list的所有的子集,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-11-11
  • Django之模型層多表操作的實現(xiàn)

    Django之模型層多表操作的實現(xiàn)

    這篇文章主要介紹了Django之模型層多表操作的實現(xiàn),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-01-01
  • python畫一個圣誕樹實現(xiàn)示例

    python畫一個圣誕樹實現(xiàn)示例

    這篇文章主要為大家介紹了使用python畫一個圣誕樹實現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-05-05
  • 利用PyTorch實現(xiàn)VGG16教程

    利用PyTorch實現(xiàn)VGG16教程

    這篇文章主要介紹了利用PyTorch實現(xiàn)VGG16教程,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-06-06
  • Win10 GPU運算環(huán)境搭建(CUDA10.0+Cudnn 7.6.5+pytroch1.2+tensorflow1.14.0)

    Win10 GPU運算環(huán)境搭建(CUDA10.0+Cudnn 7.6.5+pytroch1.2+tensorflow1.

    熟悉深度學(xué)習(xí)的人都知道,深度學(xué)習(xí)是需要訓(xùn)練的,本文主要介紹了Win10 GPU運算環(huán)境搭建,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • Django models文件模型變更錯誤解決

    Django models文件模型變更錯誤解決

    這篇文章主要介紹了Django models文件模型變更錯誤解決,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-05-05
  • Django入門使用示例

    Django入門使用示例

    這篇文章主要介紹了Django入門使用示例,具有一定借鑒價值,需要的朋友可以參考下。
    2017-12-12

最新評論