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

Python OpenCV 圖像區(qū)域輪廓標記(框選各種小紙條)

 更新時間:2021年03月12日 10:57:54   作者:夢想橡皮擦  
這篇文章主要介紹了Python OpenCV 圖像區(qū)域輪廓標記(框選各種小紙條),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

學(xué)在前面

上篇 OpenCV 博客原計劃完成一個 識別銀行卡號 的項目,但是寫的過程中發(fā)現(xiàn),技術(shù)儲備不足,我無法在下述圖片中,提取出卡號區(qū)域,也就無法進行后續(xù)的識別了,再次意識到了自己技術(shù)還不達標,繼續(xù)學(xué)習(xí)。完不成,就實現(xiàn)其它學(xué)習(xí)項目。

Python OpenCV 圖像區(qū)域輪廓標記,可用于框選各種小紙條

輪廓識別實戰(zhàn)

先看一下最終實現(xiàn)的效果,針對一張圖片(該圖片前景色和背景色差異較大),進行輪廓標記。

Python OpenCV 圖像區(qū)域輪廓標記,可用于框選各種小紙條

圖片基本處理

import cv2 as cv

src = cv.imread("./demo.jpg")

gray = cv.cvtColor(src, cv.COLOR_BGR2GRAY)
# cv.imshow("src", src)

gray = cv.GaussianBlur(gray, (5, 5), 0)
edges = cv.Canny(gray, 70, 210)

cv.imshow("edged", edges)

轉(zhuǎn)換成灰度圖,高斯模糊去噪,Canny 邊緣檢測,這些都是圖像處理的基本函數(shù),使用方法已經(jīng)在前文進行過相關(guān)學(xué)習(xí)。

運行上述代碼之后,獲取基本邊緣數(shù)據(jù)。

Python OpenCV 圖像區(qū)域輪廓標記,可用于框選各種小紙條

輪廓檢測

下面就是檢測圖像輪廓具體位置的代碼了:

contours, hierarchy = cv.findContours(edges.copy(), cv.RETR_LIST, cv.CHAIN_APPROX_SIMPLE)
print(f"輪廓數(shù)量:{len(contours)}")

cv.findContours(edges, cv.RETR_LIST, cv.CHAIN_APPROX_SIMPLE) 中,第二個參數(shù)使用的是 cv.RETR_LIST,該參數(shù)值表示檢測所有輪廓,不建立等級關(guān)系,彼此獨立。如果只想獲取輪廓邊緣信息,不關(guān)心是否嵌套在另一個輪廓之內(nèi),使用該參數(shù)值即可。

第三個參數(shù)使用的是 cv.CHAIN_APPROX_SIMPLE,表示壓縮水平方向,垂直方向,對角線方向的元素,只保留該方向的終點坐標,例如一個矩形輪廓只需 4 個點來保存輪廓信息,這也是為了后面便于計算。

觀察上圖,可以發(fā)現(xiàn)最外側(cè)的邊緣面積是最大的,所以依據(jù)面積進行排序,依據(jù)其他值也可以,獲取面積最大的輪廓。

contours = sorted(contours, key = cv.contourArea, reverse = True)[:3]

對輪廓進行簡單繪制,獲得下圖效果。

cv.drawContours(src,contours,-1,(0,0,255),2)

Python OpenCV 圖像區(qū)域輪廓標記,可用于框選各種小紙條

遍歷輪廓,計算輪廓近似

先看代碼:

# 遍歷輪廓
for c in contours:
	# 計算輪廓近似
	peri = cv.arcLength(c, True)
	approx = cv.approxPolyDP(c, 0.02 * peri, True)

一個新的函數(shù) cv.arcLength,該函數(shù)的原型如下:

retval = cv2.arcLength(curve, closed)

該函數(shù)用于計算輪廓的周長。

下面的 cv.approxPolyDP 函數(shù)原型如下:

approxCurve = cv2.approxPolyDP(curve, epsilon, closed[, approxCurve])

函數(shù)參數(shù)如下:

  • curve:源圖像的某個輪廓;
  • epsilon:距離值,表示多邊形的輪廓接近實際輪廓的程度,值越小,越精確;
  • closed:輪廓是否閉合。

最重要的參數(shù)就是 epsilon 簡單記憶為:該值越小,得到的多邊形角點越多,輪廓越接近實際輪廓,該參數(shù)是一個準確度參數(shù)。

該函數(shù)返回值為輪廓近似多邊形的角點。

繪制輪廓

最后判斷,當(dāng)上文返回的角點為 4 的時候,提取輪廓,代碼如下:

# 遍歷輪廓
for c in contours:
	# 計算輪廓近似
	peri = cv.arcLength(c, True)
	approx = cv.approxPolyDP(c, 0.02 * peri, True)

	# 當(dāng)恰好是 4 個角點的時候,獲取輪廓。
	if len(approx) == 4:
		screen_cnt = approx
		break

# 結(jié)果顯示
cv.drawContours(src, [screen_cnt], -1, (0, 0, 255), 2)

更換圖片,進行再次輪廓檢測,注意修改輪廓近似部分代碼即可。

# 遍歷輪廓
for c in contours:
  # 計算輪廓近似

  approx = cv.approxPolyDP(c, 30, True)

  if len(approx) == 4:
    screen_cnt = approx
    break

Python OpenCV 圖像區(qū)域輪廓標記,可用于框選各種小紙條

到此這篇關(guān)于Python OpenCV 圖像區(qū)域輪廓標記(框選各種小紙條)的文章就介紹到這了,更多相關(guān)Python OpenCV區(qū)域輪廓標記內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • tf.nn.conv2d與tf.layers.conv2d的區(qū)別及說明

    tf.nn.conv2d與tf.layers.conv2d的區(qū)別及說明

    這篇文章主要介紹了tf.nn.conv2d與tf.layers.conv2d的區(qū)別及說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • python __add__()的具體使用

    python __add__()的具體使用

    本文主要介紹了python __add__()的具體使用,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • Python confluent kafka客戶端配置kerberos認證流程詳解

    Python confluent kafka客戶端配置kerberos認證流程詳解

    這篇文章主要介紹了Python confluent kafka客戶端配置kerberos認證流程詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-10-10
  • 利用python在Word文檔中創(chuàng)建和執(zhí)行條件郵件合并

    利用python在Word文檔中創(chuàng)建和執(zhí)行條件郵件合并

    郵件合并域和IF域是Word文檔中兩種非常實用的域,前者可以用來進行郵件合并,根據(jù)數(shù)據(jù)批量創(chuàng)建定制的Word文檔,本文講介紹如何使用Python在Word文檔中創(chuàng)建條件郵件合并域以及執(zhí)行條件郵件合并,需要的朋友可以參考下
    2024-08-08
  • Python對list列表進行去重的幾種方法

    Python對list列表進行去重的幾種方法

    python?列表就是我們js中的數(shù)組了,我們下文整理幾個常用的python?列表去重實現(xiàn)方法,非常的簡單好用,通過代碼示例講解的非常詳細,具有一定的參考價值,需要的朋友可以參考下
    2024-10-10
  • 使用Python將字符串轉(zhuǎn)換為格式化的日期時間字符串

    使用Python將字符串轉(zhuǎn)換為格式化的日期時間字符串

    這篇文章主要介紹了使用Python將字符串轉(zhuǎn)換為格式化的日期時間字符串,需要的朋友可以參考下
    2019-09-09
  • Python將文件映射到內(nèi)存使用mmap.mmap()函數(shù)方式

    Python將文件映射到內(nèi)存使用mmap.mmap()函數(shù)方式

    這篇文章主要介紹了Python將文件映射到內(nèi)存使用mmap.mmap()函數(shù)方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • Python破解BiliBili滑塊驗證碼的思路詳解(完美避開人機識別)

    Python破解BiliBili滑塊驗證碼的思路詳解(完美避開人機識別)

    這篇文章主要介紹了Python破解BiliBili滑塊驗證碼的思路,本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-02-02
  • django query模塊

    django query模塊

    這篇文章主要介紹了django query模塊,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • Python中的random模塊及相關(guān)模塊詳解

    Python中的random模塊及相關(guān)模塊詳解

    這篇文章主要介紹了Python中的random模塊及相關(guān)模塊,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-06-06

最新評論

团风县| 余姚市| 洪江市| 轮台县| 神农架林区| 兴业县| 舒城县| 北安市| 望江县| 阿城市| 会宁县| 阳春市| 余干县| 海城市| 乌鲁木齐县| 文成县| 鄂托克旗| 密山市| 金阳县| 泌阳县| 旬阳县| 荆州市| 海晏县| 含山县| 江津市| 繁峙县| 开封市| 广州市| 理塘县| 弥勒县| 汕头市| 赤峰市| 手机| 呼伦贝尔市| 安丘市| 民权县| 中阳县| 横峰县| 正阳县| 马鞍山市| 韩城市|