婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > Python中OpenCV實現查找輪廓的實例

Python中OpenCV實現查找輪廓的實例

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

本文將結合實例代碼,介紹 OpenCV 如何查找輪廓、獲取邊界框。

代碼: contours.py

OpenCV 提供了 findContours 函數查找輪廓,需要以二值化圖像作為輸入、并指定些選項調用即可。

我們以下圖作為示例:

二值化圖像

代碼工程 data/ 提供了小狗和紅球的二值化掩膜圖像:

其使用預訓練好的實例分割模型來生成的,腳本可見 detectron2_seg_threshold.py。模型檢出結果,如下:

模型用的 Mask R-CNN 已有預測邊框。但其他模型會有只出預測掩膜的,此時想要邊框就可以使用 OpenCV 來提取。

本文代碼也提供了根據色域來獲取紅球掩膜的辦法:

import cv2 as cv
import numpy as np

# 讀取圖像
img = cv.imread(args.image, cv.IMREAD_COLOR)

# HSV 閾值,獲取掩膜
def _threshold_hsv(image, lower, upper):
  hsv = cv.cvtColor(image, cv.COLOR_BGR2HSV)
  mask = cv.inRange(hsv, lower, upper)
  result = cv.bitwise_and(image, image, mask=mask)
  return result, mask

_, thres = _threshold_hsv(img, np.array([0,110,190]), np.array([7,255,255]))

# 清除小點(可選)
kernel = cv.getStructuringElement(cv.MORPH_RECT, (3, 3), (1, 1))
thres = cv.morphologyEx(thres, cv.MORPH_OPEN, kernel)

查找輪廓

# 查找輪廓
#  cv.RETR_EXTERNAL: 只查找外部輪廓
contours, hierarchy = cv.findContours(
  threshold, cv.RETR_EXTERNAL, cv.CHAIN_APPROX_SIMPLE)

# 近似輪廓,減點(可選)
contours_poly = [cv.approxPolyDP(c, 3, True) for c in contours]

# 繪制輪廓
h, w = threshold.shape[:2]
drawing = np.zeros((h, w, 3), dtype=np.uint8)
for i in range(len(contours)):
  cv.drawContours(drawing, contours_poly, i, (0, 255, 0), 1, cv.LINE_8, hierarchy)

獲取邊界框

boundingRect 獲取邊界框,并繪制:

for contour in contours_poly:
  rect = cv.boundingRect(contour)
  cv.rectangle(drawing,
                (int(rect[0]), int(rect[1])),
                (int(rect[0]+rect[2]), int(rect[1]+rect[3])),
                (0, 255, 0), 2, cv.LINE_8)

minEnclosingCircle 獲取邊界圈,并繪制:

for contour in contours_poly:
  center, radius = cv.minEnclosingCircle(contour)
  cv.circle(drawing, (int(center[0]), int(center[1])), int(radius),
            (0, 255, 0), 2, cv.LINE_8)

參考

OpenCV Tutorials / Image Processing

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

您可能感興趣的文章:
  • Python OpenCV 基于圖像邊緣提取的輪廓發現函數
  • Python OpenCV 圖像區域輪廓標記(框選各種小紙條)
  • python 基于opencv 繪制圖像輪廓
  • Python+OpenCV圖像處理——實現輪廓發現
  • Python Opencv輪廓常用操作代碼實例解析
  • opencv python 圖像輪廓/檢測輪廓/繪制輪廓的方法
  • Python Opencv實現圖像輪廓識別功能
  • python+opencv輪廓檢測代碼解析
  • OpenCV-Python實現輪廓檢測實例分析

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

巨人網絡通訊聲明:本文標題《Python中OpenCV實現查找輪廓的實例》,本文關鍵詞  Python,中,OpenCV,實現,查找,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Python中OpenCV實現查找輪廓的實例》相關的同類信息!
  • 本頁收集關于Python中OpenCV實現查找輪廓的實例的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 大厂| 陆丰市| 固阳县| 秭归县| 姜堰市| 探索| 新化县| 绥阳县| 阜康市| 双柏县| 陈巴尔虎旗| 伊通| 丰都县| 温州市| 乌鲁木齐市| 太白县| 珲春市| 申扎县| 楚雄市| 伊金霍洛旗| 清原| 嘉黎县| 孟连| 湄潭县| 绥棱县| 韩城市| 永春县| 镇巴县| 聊城市| 扶风县| 通河县| 高唐县| 西畴县| 拉萨市| 通化县| 浮梁县| 青浦区| 巴彦淖尔市| 商河县| 读书| 新民市|