欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品

主頁 > 知識庫 > OpenCV-Python實現輪廓的特征值

OpenCV-Python實現輪廓的特征值

熱門標簽:海外網吧地圖標注注冊 打電話機器人營銷 ai電銷機器人的優勢 聊城語音外呼系統 孝感營銷電話機器人效果怎么樣 騰訊地圖標注沒法顯示 地圖標注自己和別人標注區別 商家地圖標注海報 南陽打電話機器人

前言

輪廓自身的一些屬性特征及輪廓所包圍對象的特征對于描述圖像具有重要意義。本篇博文將介紹幾個輪廓自身的屬性特征及輪廓包圍對象的特征。

寬高比

在輪廓中,我們可以通過寬高比來描述輪廓,例如矩形的輪廓寬高比為:

寬高比=寬度/高度

下面,我們來計算矩形輪廓的寬高比,代碼如下:

import cv2

img = cv2.imread("26_1.jpg")
cv2.imshow("img", img)

# 轉換為灰度圖像
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

ret, binary = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY)
contours, hierarchy = cv2.findContours(binary, cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE)

x, y, w, h = cv2.boundingRect(contours[0])
cv2.rectangle(img, (x, y), (x + w, y + h), (0, 0, 255), 3)
cv2.imshow("img1", img)

aspectRatio=float(w)/h
print(aspectRatio)

cv2.waitKey()
cv2.destroyAllWindows()

運行之后,我們可以得到輪廓的寬高比約為3:

Extend

我們還可以使用輪廓面積與矩形邊界面積之比Extend來描述圖像及其輪廓特征,數學計算公式圖下:

Extend=輪廓面積/矩形邊界面積

下面,我們來計算Extend,代碼如下:

import cv2

img = cv2.imread("26_1.jpg")
cv2.imshow("img", img)

# 轉換為灰度圖像
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

ret, binary = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY)
contours, hierarchy = cv2.findContours(binary, cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE)

x, y, w, h = cv2.boundingRect(contours[0])
rectArea=w*h#矩形邊界面積
cntArea=cv2.contourArea(contours[0])#輪廓面積
extend=float(cntArea)/rectArea
print(extend)

本例中,輪廓面積與矩形邊界面積的比值Extend大約為0.8:

Solidity

我們還可以使用輪廓面積與凸包面積之比Solidity來衡量圖像,輪廓以及凸包的特征。其數學計算公式為:

Slidity=輪廓面積/凸包面積

下面,我們來計算Slidity,代碼如下:

import cv2

img = cv2.imread("26_1.jpg")
cv2.imshow("img", img)

# 轉換為灰度圖像
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

ret, binary = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY)
contours, hierarchy = cv2.findContours(binary, cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE)

x, y, w, h = cv2.boundingRect(contours[0])
cntArea=cv2.contourArea(contours[0])#輪廓面積
hull=cv2.convexHull(contours[0])
hullArea=cv2.contourArea(hull)#凸包面積
solidity=float(cntArea)/hullArea
print(solidity)

運行之后,本例輪廓面積與凸包面積的比值solidity約為1:

等效直徑

在OpenCV中,我們還可以使用等效直徑來衡量輪廓的特征值,該值是與輪廓面積相等的圓形的直徑。其數學計算公式為:


下面,我們來計算與輪廓面積相等的圓形直徑,代碼如下:

import cv2
import numpy as np

img = cv2.imread("26_1.jpg")
cv2.imshow("img", img)

# 轉換為灰度圖像
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

ret, binary = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY)
contours, hierarchy = cv2.findContours(binary, cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE)

x, y, w, h = cv2.boundingRect(contours[0])
cntArea=cv2.contourArea(contours[0])#輪廓面積
equiDiameter=np.sqrt(4*cntArea/np.pi)
print(equiDiameter)
cv2.circle(img,(100,100),int(equiDiameter/2),(0,255,0),3)
cv2.imshow("img1",img)
cv2.waitKey()
cv2.destroyAllWindows()

運行之后,我們得到其等效直徑約為145:

方向

在OpenCV中,函數cv2.fitEllipse()可以用來構建最優擬合橢圓,還可以在返回值內分別返回橢圓的中心點,軸長,旋轉角度信息。使用這種形式,能夠直觀地獲取橢圓的方向等信息。

函數cv2.fitEllipse()返回值為:

(x,y):橢圓的中心點

(MA,ma):橢圓水平方向軸與垂直方向軸的長度

angle:橢圓的旋轉角度

import cv2

img = cv2.imread("26_1.jpg")
cv2.imshow("img", img)

# 轉換為灰度圖像
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

ret, binary = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY)
contours, hierarchy = cv2.findContours(binary, cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE)

ellipsis=cv2.fitEllipse(contours[0])

(x, y), (MA, ma), angle = cv2.fitEllipse(contours[0])

print((x, y), (MA, ma), angle)

cv2.ellipse(img, ellipsis, (0, 255, 0), 2)
cv2.imshow("img1", img)
cv2.waitKey()
cv2.destroyAllWindows()

本來就是橢圓圖,下面擬合后正好也是橢圓:

掩摸和像素點

有時候,我們還像獲取某對象的掩摸圖像及其對應的點。在OpenCV中,它還提供了cv2.findNonZero()函數用于獲取一個圖像內的輪廓點位置,其完整定義如下:

def findNonZero(src, idx=None): 

src:要查找非零元素的圖像

idx:返回值,表示非0元素的索引位置。具體格式為(行號,列號)

下面,我們實測該函數,代碼如下:

import cv2
import numpy as np

img = cv2.imread("26_1.jpg")

cv2.imshow("img", img)

# 轉換為灰度圖像
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

ret, binary = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY)
contours, hierarchy = cv2.findContours(binary, cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE)

mask=np.zeros(gray.shape,np.uint8)
cv2.drawContours(mask,[contours[0]],0,255,2)
pixelpoints=cv2.findNonZero(mask)
print(pixelpoints)

cv2.imshow("img1", mask)
cv2.waitKey()
cv2.destroyAllWindows()

運行之后,我們會得到輪廓點位置:

最大值,最小值以及它們的位置

在OpenCV中,它提供cv2.minMaxLoc()函數獲取指定對象內最大值,最小值以及位置等信息,其完整定義如下:

def minMaxLoc(src, mask=None): 

src:單通道圖像

mask:掩摸,通過使用掩摸圖像,得到掩膜指定區域內的最值信息

該函數返回4個值:最小值,最大值,最小值位置,最大值位置。

下面,我們來獲取這些值,代碼如下:

import cv2
import numpy as np

img = cv2.imread("26_1.jpg")

cv2.imshow("img", img)

# 轉換為灰度圖像
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

ret, binary = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY)
contours, hierarchy = cv2.findContours(binary, cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE)

mask = np.zeros(gray.shape, np.uint8)
cv2.drawContours(mask, [contours[0]], 0, 255, 2)

min, max, min_loc, max_loc = cv2.minMaxLoc(gray, mask)
print(min, max, min_loc, max_loc)

運行之后,控制臺輸出4個值:

平均顏色及平均灰度

在OpenCV中,它給我們提供cv2.mean()函數計算一個對象的平均顏色與平均灰度。其完整定義如下:

def mean(src, mask=None):

參數與上面兩個小節一樣,這里不在贅述。下面,我們來使用這個函數,代碼如下:

import cv2
import numpy as np

img = cv2.imread("26_1.jpg")


cv2.imshow("img", img)

# 轉換為灰度圖像
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

ret, binary = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY)
contours, hierarchy = cv2.findContours(binary, cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE)

mask=np.zeros(gray.shape,np.uint8)
cv2.drawContours(mask,[contours[0]],0,255,2)

mean=cv2.mean(img,mask)

運行之后,輸出4個值:RGB以及A通道的均值:

極點

有時候,我們希望獲取某個對象內的極點,比如最左,最右,最上,最下等。在OpenCV中,它給我們提供了以下方法進行獲取:

left=tuple(cnt[cnt[:,:,0].argmin()][0])
right=tuple(cnt[cnt[:,:,0].argmax()][0])
top=tuple(cnt[cnt[:,:,1].argmin()][0])
bottom=tuple(cnt[cnt[:,:,1].argmax()][0])

下面,我們來通過這些方法獲取,代碼如下:

import cv2
import numpy as np

img = cv2.imread("26_1.jpg")

cv2.imshow("img", img)

# 轉換為灰度圖像
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

ret, binary = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY)
contours, hierarchy = cv2.findContours(binary, cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE)

mask = np.zeros(img.shape, np.uint8)
cnt = contours[0]
left = tuple(cnt[cnt[:, :, 0].argmin()][0])
right = tuple(cnt[cnt[:, :, 0].argmax()][0])
top = tuple(cnt[cnt[:, :, 1].argmin()][0])
bottom = tuple(cnt[cnt[:, :, 1].argmax()][0])

print(left, right, top, bottom)

font = cv2.FONT_HERSHEY_SIMPLEX

cv2.putText(img, "left", left, font, 1, (0, 255, 0), 2)
cv2.putText(img, "right", right, font, 1, (0, 255, 0), 2)
cv2.putText(img, "top", top, font, 1, (0, 255, 0), 2)
cv2.putText(img, "bottom", bottom, font, 1, (0, 255, 0), 2)

cv2.imshow("result",img)
cv2.waitKey()
cv2.destroyAllWindows()

運行之后,值與效果如下:

到此這篇關于OpenCV-Python實現輪廓的特征值的文章就介紹到這了,更多相關OpenCV 輪廓的特征值內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • Python通過OpenCV的findContours獲取輪廓并切割實例
  • Python Opencv實現圖像輪廓識別功能
  • OpenCV-Python實現輪廓檢測實例分析
  • opencv python 圖像輪廓/檢測輪廓/繪制輪廓的方法
  • OpenCV 輪廓檢測的實現方法
  • Opencv提取連通區域輪廓的方法
  • python+opencv輪廓檢測代碼解析
  • Opencv處理圖像之輪廓提取
  • OpenCV實現圖像輪廓檢測以及外接矩形
  • opencv3/C++輪廓的提取與篩選方式
  • Opencv實現輪廓提取功能

標簽:揚州 聊城 六盤水 楊凌 牡丹江 撫州 南寧 迪慶

巨人網絡通訊聲明:本文標題《OpenCV-Python實現輪廓的特征值》,本文關鍵詞  OpenCV-Python,實現,輪廓,的,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《OpenCV-Python實現輪廓的特征值》相關的同類信息!
  • 本頁收集關于OpenCV-Python實現輪廓的特征值的相關信息資訊供網民參考!
  • 推薦文章
    欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品
  • <rt id="w000q"><acronym id="w000q"></acronym></rt>
  • <abbr id="w000q"></abbr>
    <rt id="w000q"></rt>
    久久99精品国产.久久久久| 四季av中文字幕| 欧美三级视频在线播放| 亚洲欧洲性图库| 成人国产在线观看| wwwav国产| 国产精品久久久久影院亚瑟| 国产成人av电影免费在线观看| 日本少妇色视频| 欧美成人福利视频| 蜜臀av一区二区| 90岁老太婆乱淫| 久久久久久综合| 国产精品一二一区| 天堂а√在线中文在线鲁大师| 欧美激情中文不卡| 国产91精品久久久久久久网曝门| 5566中文字幕| 中文字幕一区二区三区精华液| 波多野结衣精品在线| 色播五月激情综合网| 一区二区三区蜜桃| 绯色av蜜臀vs少妇| 在线播放视频一区| 琪琪一区二区三区| 免费看裸体网站| 国产精品麻豆视频| 91社区在线播放| 911精品国产一区二区在线| 日韩一区精品字幕| 国产精品亚洲无码| 亚洲国产精品激情在线观看| 成人精品电影在线观看| 在线观看中文字幕不卡| 亚洲成人资源在线| www.自拍偷拍| 中文字幕免费不卡| 一个人看的视频www| 91精品国产入口在线| 精久久久久久久久久久| 欧美做爰爽爽爽爽爽爽| 亚洲线精品一区二区三区| 五级黄高潮片90分钟视频| 久久精品视频一区二区三区| 成人黄色一级视频| 欧美日韩国产小视频| 老司机免费视频一区二区| 国产3级在线观看| 一区二区三区日本| 亚洲国产无码精品| 国产精品亲子乱子伦xxxx裸| www.四虎精品| 久久青草欧美一区二区三区| voyeur盗摄精品| 日韩西西人体444www| 国产成人精品综合在线观看 | 国产拍揄自揄精品视频麻豆| 99精品国产99久久久久久白柏| 91麻豆精品国产自产在线| 国产一区中文字幕| 91国偷自产一区二区使用方法| 日本视频免费一区| 全网免费在线播放视频入口| 五月婷婷激情综合网| 国产色无码精品视频国产| 亚洲mv在线观看| 久久爱一区二区| 婷婷久久综合九色国产成人| 一级片一级片一级片| 午夜精品久久久久久久99水蜜桃| 999精品视频在线观看播放| 丝袜亚洲另类欧美综合| 极品颜值美女露脸啪啪| 奇米精品一区二区三区在线观看| 久久精品视频免费在线观看| 蜜臀精品久久久久久蜜臀| 色婷婷精品大在线视频| 极品少妇一区二区| 欧美裸体一区二区三区| 高清不卡一二三区| 欧美大片在线观看| 亚洲欧美激情一区二区三区| 欧美国产精品中文字幕| 国产高清自拍视频| 一区二区国产视频| 在线观看美女av| 麻豆极品一区二区三区| 欧美嫩在线观看| 不卡一区二区三区四区| 久久精品人人做人人综合 | 91麻豆精品国产91久久久资源速度| 成人在线综合网站| 欧美精品一区二区高清在线观看| 精品伦一区二区三区| 自拍偷拍亚洲欧美日韩| 91社区视频在线观看| 免费久久99精品国产| 欧美人动与zoxxxx乱| 91色在线porny| 国产精品福利电影一区二区三区四区 | 男人的午夜天堂| 久久成人综合网| 日韩视频在线永久播放| 欧美极品jizzhd欧美仙踪林| 亚洲免费在线电影| 色综合天天天天做夜夜夜夜做| 国产精品一级黄| 国产亚洲成aⅴ人片在线观看 | 精品卡一卡二卡三卡四在线| 精品人妻伦一二三区久| 亚洲综合另类小说| 91黄视频在线观看| av中文字幕在线不卡| 国产精品久久久久影院亚瑟| 情侣偷拍对白清晰饥渴难耐| 国产精品一区2区| 国产欧美一区二区在线观看| 国产精品美女高潮无套| 久久66热re国产| 久久青草国产手机看片福利盒子| 韩国女同性做爰三级| 麻豆91精品视频| 精品国产乱码久久久久久久久| 免费看污黄网站在线观看| 全部av―极品视觉盛宴亚洲| 日韩欧美精品在线| 国产男男chinese网站| 久久精品国产亚洲5555| 久久综合九色综合欧美亚洲| 西西444www无码大胆| 韩国成人精品a∨在线观看| 日韩免费看的电影| 在线观看国产精品一区| 国产一区二区三区在线看麻豆| 国产丝袜欧美中文另类| 成年人免费视频播放| 丁香六月久久综合狠狠色| 亚洲欧洲av在线| 欧洲国内综合视频| 国产日韩视频一区| 秋霞影院一区二区| 久久久久久久网| 国产在线一卡二卡| 91丨九色丨蝌蚪丨老版| 亚洲午夜在线电影| 欧美一二三四区在线| 91精品人妻一区二区三区| 国产麻豆视频一区| 亚洲欧美中日韩| 欧美日韩一区二区不卡| 亚洲观看黄色网| 精品在线视频一区| 国产精品第五页| 欧美视频中文字幕| 美国黄色a级片| 国产精品资源网| 亚洲视频一二区| 欧美福利视频导航| 一级在线观看视频| 99久久久久免费精品国产| 亚洲成人高清在线| 久久亚洲二区三区| 色综合天天性综合| 亚洲激情 欧美| 国产乱理伦片在线观看夜一区| 国产精品成人网| 在线电影院国产精品| 久久久久久国产免费a片| 成人网男人的天堂| 亚洲成av人影院| 国产情人综合久久777777| 欧美在线视频日韩| 欧美图片第一页| av在线不卡网| 免费在线观看一区二区三区| 中文字幕高清一区| 欧美精品777| 国产3级在线观看| www.啪啪.com| 国产不卡高清在线观看视频| 亚洲福中文字幕伊人影院| 国产亚洲女人久久久久毛片| 欧美午夜一区二区三区| 免费网站在线高清观看| 特种兵之深入敌后| 国内偷窥港台综合视频在线播放| 亚洲猫色日本管| 久久久综合精品| 欧美喷潮久久久xxxxx| 羞羞在线观看视频| 在线观看国产免费视频| fc2成人免费人成在线观看播放| 强制捆绑调教一区二区| 亚洲激情在线播放| 国产亚洲欧美在线| 69堂国产成人免费视频| 国产一区二区播放| 国产一级久久久久毛片精品 | 自拍av一区二区三区| 精品国产制服丝袜高跟|