日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

Python使用Opencv實現邊緣檢測以及輪廓檢測的實現

瀏覽:39日期:2022-06-30 17:09:09
邊緣檢測

Canny邊緣檢測器是一種被廣泛使用的算法,并被認為是邊緣檢測最優的算法,該方法使用了比高斯差分算法更復雜的技巧,如多向灰度梯度和滯后閾值化。

Canny邊緣檢測器算法基本步驟:

平滑圖像:通過使用合適的模糊半徑執行高斯模糊來減少圖像內的噪聲。 計算圖像的梯度:這里計算圖像的梯度,并將梯度分類為垂直、水平和斜對角。這一步的輸出用于在下一步中計算真正的邊緣。 非最大值抑制:利用上一步計算出來的梯度方向,檢測某一像素在梯度的正方向和負方向上是否是局部最大值,如果是,則抑制該像素(像素不屬于邊緣)。這是一種邊緣細化技術,用最急劇的變換選出邊緣點。 用滯后閾值化選擇邊緣:最后一步,檢查某一條邊緣是否明顯到足以作為最終輸出,最后去除所有不明顯的邊緣。

Opencv使用Canny邊緣檢測相對簡單,代碼如下:

import cv2import numpy as npimg = cv2.imread('hammer.jpg', 0)cv2.imwrite('canny.jpg', cv2.Canny(img, 200, 300))cv2.imshow('canny', cv2.imread('canny.jpg'))cv2.waitKey()cv2.destroyAllWindows()

運行結果:

Python使用Opencv實現邊緣檢測以及輪廓檢測的實現

Canny函數的原型為

cv2.Canny(image, threshold1, threshold2[, edges[, apertureSize[, L2gradient ]]])

必要參數:第一個參數是需要處理的原圖像,該圖像必須為單通道的灰度圖;第二個參數是滯后閾值1;第三個參數是滯后閾值2。

輪廓檢測

輪廓檢測主要由cv2.findContours函數實現的。函數的原型為

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

函數參數第一個參數是尋找輪廓的圖像;

第二個參數表示輪廓的檢索模式,有四種(本文介紹的都是新的cv2接口):

cv2.RETR_EXTERNAL表示只檢測外輪廓 。 cv2.RETR_LIST檢測的輪廓不建立等級關系。 cv2.RETR_CCOMP建立兩個等級的輪廓,上面的一層為外邊界,里面的一層為內孔的邊界信息。如果內孔內還有一個連通物體,這個物體的邊界也在頂層。 cv2.RETR_TREE建立一個等級樹結構的輪廓。

第三個參數method為輪廓的逼近方法

cv2.CHAIN_APPROX_NONE存儲所有的輪廓點,相鄰的兩個點的像素位置差不超過1,即max(abs(x1-x2),abs(y2-y1))==1。 cv2.CHAIN_APPROX_SIMPLE壓縮水平方向,垂直方向,對角線方向的元素,只保留該方向的終點坐標,例如一個矩形輪廓只需4個點來保存輪廓信息。 cv2.CHAIN_APPROX_TC89_L1和cv2.CHAIN_APPROX_TC89_KCOS都是使用teh-Chinl chain近似算法。

返回值

如:image, contours, hier = cv2.findContours(thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)

image:是原圖像

contours:圖像的輪廓,以列表的形式表示,每個元素都是圖像中的一個輪廓。

hier:相應輪廓之間的關系。這是一個ndarray,其中的元素個數和輪廓個數相同,每個輪廓contours[i]對應4個hierarchy元素hierarchy[i][0] ~hierarchy[i][3],分別表示后一個輪廓、前一個輪廓、父輪廓、內嵌輪廓的索引編號,如果沒有對應項,則該值為負數。

原圖:

Python使用Opencv實現邊緣檢測以及輪廓檢測的實現

示例一

import cv2import numpy as npimg = cv2.pyrDown(cv2.imread('hammer.jpg', cv2.IMREAD_UNCHANGED))# threshold 函數對圖像進行二化值處理,由于處理后圖像對原圖像有所變化,因此img.copy()生成新的圖像,cv2.THRESH_BINARY是二化值ret, thresh = cv2.threshold(cv2.cvtColor(img.copy(), cv2.COLOR_BGR2GRAY), 127, 255, cv2.THRESH_BINARY)# findContours函數查找圖像里的圖形輪廓# 函數參數thresh是圖像對象# 層次類型,參數cv2.RETR_EXTERNAL是獲取最外層輪廓,cv2.RETR_TREE是獲取輪廓的整體結構# 輪廓逼近方法# 輸出的返回值,image是原圖像、contours是圖像的輪廓、hier是層次類型image, contours, hier = cv2.findContours(thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)for c in contours: # 輪廓繪制方法一 # boundingRect函數計算邊框值,x,y是坐標值,w,h是矩形的寬和高 x, y, w, h = cv2.boundingRect(c) # 在img圖像畫出矩形,(x, y), (x + w, y + h)是矩形坐標,(0, 255, 0)設置通道顏色,2是設置線條粗度 cv2.rectangle(img, (x, y), (x + w, y + h), (0, 255, 0), 2) # 輪廓繪制方法二 # 查找最小區域 rect = cv2.minAreaRect(c) # 計算最小面積矩形的坐標 box = cv2.boxPoints(rect) # 將坐標規范化為整數 box = np.int0(box) # 繪制矩形 cv2.drawContours(img, [box], 0, (0, 0, 255), 3) # 輪廓繪制方法三 # 圓心坐標和半徑的計算 (x, y), radius = cv2.minEnclosingCircle(c) # 規范化為整數 center = (int(x), int(y)) radius = int(radius) # 勾畫圓形區域 img = cv2.circle(img, center, radius, (0, 255, 0), 2)# # 輪廓繪制方法四# 圍繞圖形勾畫藍色線條cv2.drawContours(img, contours, -1, (255, 0, 0), 2)# 顯示圖像cv2.imshow('contours', img)cv2.waitKey()cv2.destroyAllWindows()

運行結果如圖所示:

Python使用Opencv實現邊緣檢測以及輪廓檢測的實現

示例二

import cv2import numpy as npimg = cv2.pyrDown(cv2.imread('hammer.jpg', cv2.IMREAD_UNCHANGED))ret, thresh = cv2.threshold(cv2.cvtColor(img.copy(), cv2.COLOR_BGR2GRAY) , 127, 255, cv2.THRESH_BINARY)# findContours函數查找圖像里的圖形輪廓# 函數參數thresh是圖像對象# 層次類型,參數cv2.RETR_EXTERNAL是獲取最外層輪廓,cv2.RETR_TREE是獲取輪廓的整體結構# 輪廓逼近方法# 輸出的返回值,image是原圖像、contours是圖像的輪廓、hier是層次類型image, contours, hier = cv2.findContours(thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)# 創建新的圖像blackblack = cv2.cvtColor(np.zeros((img.shape[1], img.shape[0]), dtype=np.uint8), cv2.COLOR_GRAY2BGR)for cnt in contours: # 輪廓周長也被稱為弧長。可以使用函數 cv2.arcLength() 計算得到。這個函數的第二參數可以用來指定對象的形狀是閉合的(True) ,還是打開的(一條曲線) epsilon = 0.01 * cv2.arcLength(cnt, True) # 函數approxPolyDP來對指定的點集進行逼近,cnt是圖像輪廓,epsilon表示的是精度,越小精度越高,因為表示的意思是是原始曲線與近似曲線之間的最大距離。 # 第三個函數參數若為true,則說明近似曲線是閉合的,它的首位都是相連,反之,若為false,則斷開。 approx = cv2.approxPolyDP(cnt, epsilon, True) # convexHull檢查一個曲線的凸性缺陷并進行修正,參數cnt是圖像輪廓。 hull = cv2.convexHull(cnt) # 勾畫圖像原始的輪廓 cv2.drawContours(black, [cnt], -1, (0, 255, 0), 2) # 用多邊形勾畫輪廓區域 cv2.drawContours(black, [approx], -1, (255, 255, 0), 2) # 修正凸性缺陷的輪廓區域 cv2.drawContours(black, [hull], -1, (0, 0, 255), 2)# 顯示圖像cv2.imshow('hull', black)cv2.waitKey()cv2.destroyAllWindows()

運行結果如圖所示:

Python使用Opencv實現邊緣檢測以及輪廓檢測的實現

參考資料:OpenCV 3計算機視覺 Python語言實現第二版

到此這篇關于Python使用Opencv實現邊緣檢測以及輪廓檢測的實現的文章就介紹到這了,更多相關Python 邊緣檢測內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Python 編程
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
中文精品电影| 免费日韩av| 久久免费高清| 91精品国产福利在线观看麻豆| 丝袜国产日韩另类美女| 国产精品香蕉| 亚洲精品观看| 久久伦理在线| 荡女精品导航| 日韩在线一区二区| 免费视频国产一区| 高清一区二区| 国产一卡不卡| 欧美国产偷国产精品三区| 精品欧美视频| 亚洲国产综合在线看不卡| 国产精品v一区二区三区| 中文在线а√天堂| 日本欧美在线| 综合视频一区| 国产精品7m凸凹视频分类| 欧美欧美黄在线二区| 亚洲精品观看| 国产精品毛片一区二区三区| 日韩av自拍| 米奇777超碰欧美日韩亚洲| 97se综合| 水蜜桃精品av一区二区| 日本欧美一区| 91欧美国产| 欧美特黄一级大片| 免费精品国产的网站免费观看| 欧美成人一二区| 国产亚洲精品美女久久久久久久久久| 欧美精品一二| 久久午夜精品| 毛片不卡一区二区| 捆绑调教日本一区二区三区| 久久不卡国产精品一区二区| 国产女人18毛片水真多18精品| 久久99精品久久久野外观看| 久久国产乱子精品免费女| 精品中文在线| 中文在线一区| 日韩成人精品一区二区三区 | 狠狠爱成人网| 男女激情视频一区| 日本视频在线一区| 国产亚洲精品精品国产亚洲综合| 亚洲a一区二区三区| 欧美精品一卡| 国产精品激情电影| 夜鲁夜鲁夜鲁视频在线播放| 日韩在线a电影| 精品91福利视频| 不卡中文字幕| 久久久久国产精品一区三寸| 日韩一区二区三免费高清在线观看| 蜜桃视频第一区免费观看| 日本一不卡视频| 不卡一区综合视频| 久久中文在线| 99国产一区| 国产综合精品| 日韩免费小视频| 国产乱人伦丫前精品视频 | 久久精品女人| 国产一区成人| 五月天av在线| 精品国产亚洲一区二区在线观看| 久久久久网站| 国产精品探花在线观看| 蜜臀av亚洲一区中文字幕| 午夜精品成人av| 国产视频一区二区在线播放| 日韩精品高清不卡| 日韩一区精品视频| 久久国产日韩| 国产suv精品一区| 日韩av在线中文字幕| 成人亚洲精品| 国产精品videossex久久发布 | 亚洲精品国模| 怡红院精品视频在线观看极品| 开心激情综合| 日韩高清一区| 国产视频一区欧美| 黄色成人精品网站| 国产视频一区欧美| 日av在线不卡| 久久国内精品自在自线400部| 日韩国产一二三区| 日韩欧乱色一区二区三区在线| 亚洲精品91| 日韩在线网址| 久久亚洲一区| 日本h片久久| 亚洲天堂资源| 麻豆9191精品国产| 国产色噜噜噜91在线精品| 国产一区二区三区成人欧美日韩在线观看 | 欧美日韩国产传媒| 亚洲精品123区| 日韩精品视频网站| 国产精品第一国产精品| 欧洲精品一区二区三区| 香蕉成人av| 亚洲综合不卡| 国产午夜久久av| 激情久久中文字幕| 国产精久久久| 国产伊人精品| 青青伊人久久| 999久久久精品国产| 婷婷精品在线观看| 91青青国产在线观看精品| 九色精品91| 老司机免费视频一区二区三区| av一区二区高清| 国产欧美一区二区三区国产幕精品 | 理论片午夜视频在线观看| 久久视频一区| 高潮久久久久久久久久久久久久| 日韩久久一区| 亚洲欧美日韩国产综合精品二区 | 日韩综合一区二区| 麻豆久久久久久| 日韩精品亚洲专区| 久久av一区| 国产成人久久精品麻豆二区| 日韩中文字幕1| 国产乱码午夜在线视频| 国产精区一区二区| 亚洲另类黄色| 欧美日韩少妇| 婷婷综合社区| 欧美另类专区| 99国产精品免费视频观看| 久久99久久人婷婷精品综合| 亚洲免费专区| 综合在线一区| 在线精品一区| 亚洲综合色婷婷在线观看| 日韩视频在线一区二区三区| 欧美日韩色图| 欧美中文字幕一区二区| 欧美日中文字幕| 久久影院资源站| 国产不卡av一区二区| 久久uomeier| 成人羞羞在线观看网站| 香蕉成人av| 久久电影一区| 日韩精品国产精品| 日本欧美一区二区在线观看| 麻豆高清免费国产一区| 精品在线网站观看| 国产在线|日韩| 亚洲免费激情| 在线观看视频免费一区二区三区| 欧美亚洲tv| 激情欧美丁香| 亚洲精品在线a| 久久亚洲人体| 高清av一区| 蜜桃视频第一区免费观看| 青草国产精品久久久久久| 国际精品欧美精品| 狠狠爱成人网| 高清一区二区三区av| 香蕉成人久久| 精品视频网站| 首页国产欧美久久| 国产精品久一| 成人精品久久| 国产精品外国| 久久99精品久久久久久园产越南 | 夜夜嗨一区二区三区| 在线观看亚洲精品福利片| 97国产成人高清在线观看| 亚洲深夜福利| 成人免费电影网址| 婷婷综合成人| 欧美日韩一二三四| 91视频一区| 国产精品黄色| 亚洲欧美一级| 久久免费福利| 综合色就爱涩涩涩综合婷婷| 高清av不卡| 久久99国产精品视频| 日韩av影院| 天堂av在线一区| 首页亚洲欧美制服丝腿| 在线一区视频| 在线国产一区二区| 国产一区日韩一区| 久久精品av| av高清不卡| 午夜久久中文|