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

OpenCV圖像輪廓的繪制方法

 更新時間:2021年08月18日 16:06:46   作者:404_久夏青  
這篇文章主要為大家詳細介紹了OpenCV圖像輪廓的繪制方法,以及測試幾何圖形、花朵圖形輪廓,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了檢測幾何圖形輪廓和檢測花朵圖形輪廓,供大家參考,具體內(nèi)容如下

OpenCV繪制圖像輪廓

繪制輪廓的一般步驟:

1、讀取圖像

image = cv2.imread('image_path')

2、將原圖轉(zhuǎn)化為灰度圖像

image_gray  = cv.cvtColor(image, cv.COLOR_BGR2GRAY)

3、將灰度圖像進行二值化閾值處理

# 這里將閾值設(shè)置為127為例,最大閾值為255
t, binary = cv.threshold(image_gray, 127, 255, cv.THRESH_BINARY)

4、檢測二值化圖像中邊緣輪廓

# 這里以檢測所有輪廓,不建立層次關(guān)系為例
contours, hierarchy = cv2.findContours(binary, cv2.RETR_LIST, cv2.CHAIN_APPROX_NONE)

5、在原圖上繪制圖像

# 這里將輪廓索引設(shè)置為-1,繪制出所有輪廓,顏色設(shè)置為紅色,寬度為2為例
cv2.drawContours(image, contours, -1, (0, 0, 255), 2)

6、顯示圖像

cv2.imshow('image', image)

測試檢測幾何圖形輪廓:

代碼如下:

# -*- coding: utf-8 -*-
# @Time    : 2021/8/17
# @Author  : ZYh
"""
Introduction:
圖像輪廓檢測:
    OpenCV提供的findContours()方法可以通過計算圖像梯度來判斷出圖像的邊緣,然后將邊緣的點封裝成數(shù)組返回
    contours, hierarchy = cv2.findContours(image, mode, mothode)
    參數(shù):
        image->被檢測圖像必須是8位單通道二值圖像。如果原圖是rgb圖像,必須轉(zhuǎn)為灰度圖像,在進行二值化閾值處理
        mode->輪廓的檢索模式
            參數(shù)值                     含義
            cv2.RETR_EXTERNAL       只檢測外輪廓
            cv2.RETR_LIST           檢測所有輪廓,但不建立層次關(guān)系
            cv2.RETR_CCOMP          檢測所有輪廓,并建立兩級層次關(guān)系
            cv2.RETR_TREE           檢測所有輪廓,并建立樹狀結(jié)構(gòu)的層次關(guān)系
        mothode->檢測輪廓時使用的方法
            參數(shù)值                     含義
            cv2.CHAIN_NONE                儲存輪廓上的所有點
            cv2.CHAIN_APPROX_SIMPLE       只保存水平、垂直或?qū)蔷€輪廓的端點
            cv2.CHAIN_APPROX_TC89_L1      Ten_Chinl近似算法的一種
            cv2.CHAIN_APPROX_TC89_KCOS    Ten_Chinl近似算法的一種
    retval:
        contours->檢測出的所有輪廓,list類型,每一個元素都是某個輪廓的像素坐標數(shù)組
        hierarchy->輪廓之間的層次關(guān)系
圖像輪廓繪制:
    image = cv2.drawContours(image, contours, contourIdx, color, thickness, lineTypee, hierarchy,
        maxLevel, offse)
    參數(shù):
        image->被繪制輪廓的原始圖像,可以是多通道圖像
        contours->findContours()方法得出的輪廓列表
        contourIdx->繪制輪廓的索引,如果為-1則繪制所有輪廓
        color:繪制顏色,BGR格式
        thickness->可選參數(shù),畫筆的粗細,如果為-1則繪制實心輪廓
        lineTypee->可選參數(shù),繪制輪廓的線型
        hierarchy->可選參數(shù),findContours()方法得出的層次關(guān)系
        maxLevel->可選參數(shù),繪制輪廓的層次深度,最深繪制第maxLevel層
        offse->可選參數(shù),偏移量,可以改變繪制結(jié)果的位置
"""
import cv2 as cv
# 讀取加載圖像
image1 = cv.imread('shape1.png')
image2 = cv.imread('shape1.png')
# 將圖像由RGB格式轉(zhuǎn)為灰度圖像
gray1 = cv.cvtColor(image1, cv.COLOR_BGR2GRAY)
gray2 = cv.cvtColor(image2, cv.COLOR_BGR2GRAY)
# 將圖像進行二值化閾值處理, 返回t是處理時采用的閾值,binary是閾值處理后的圖像
t1, binary1 = cv.threshold(gray1, 127, 255, cv.THRESH_BINARY)
t2, binary2 = cv.threshold(gray2, 127, 255, cv.THRESH_BINARY)
# 檢測圖像中出現(xiàn)的所有輪廓,記錄輪廓的每一個點
contours1, hierarchy1 = cv.findContours(binary1, cv.RETR_LIST, cv.CHAIN_APPROX_NONE)
# 顯示原圖
cv.imshow('image', image1)
# 繪制所有輪廓,寬度為3,顏色為紅色
cv.drawContours(image1, contours1, -1, (0, 0, 255), 3)
cv.imshow('cv.RETR_LIST', image1)

# 檢測圖像中的外輪廓,記錄輪廓的每一個點
contours2, hierarchy2 = cv.findContours(binary2, cv.RETR_EXTERNAL, cv.CHAIN_APPROX_NONE)
# 使用cv2.RETR_EXTERNAL做參數(shù)繪制外輪廓,寬度為3,顏色為藍色
cv.drawContours(image2, contours2, -1, (255, 0, 0), 3)
cv.imshow('cv.RETR_EXTERNAL', image2)

cv.waitKey()
cv.destroyAllWindows()

運行結(jié)果:

測試檢測花朵圖形輪廓:

代碼如下:

# -*- coding: utf-8 -*-
# @Time    : 2021/8/18
# @Author  : ZYh
"""
Introduction:
繪制花朵所有輪廓
"""
import  cv2 as cv

image_flower = cv.imread('flower.png')
# 顯示原圖
cv.imshow('flower1', image_flower)
# 對圖像進行中值濾波處理,去除噪聲
image_flower = cv.medianBlur(image_flower, 5)
cv.imshow('flower2', image_flower)
# 將圖像從RGB轉(zhuǎn)為單通道灰度圖像
gray_flower = cv.cvtColor(image_flower, cv.COLOR_BGR2GRAY)
# 灰度圖像進行二值化閾值處理
t, binary = cv.threshold(gray_flower, 127, 255, cv.THRESH_BINARY)
# 顯示二值化圖像
cv.imshow('binary', binary)
# 獲取二值化圖像中的輪廓以及輪廓層次
contours, hierarchy = cv.findContours(binary, cv.RETR_LIST, cv.CHAIN_APPROX_NONE)
# 在原圖中繪制輪廓
cv.drawContours(image_flower, contours, -1, (0, 255, 255), 2)
# 顯示繪制輪廓后的圖像
cv.imshow('cv.RETR_LIST', image_flower)

cv.waitKey()
cv.destroyAllWindows()

運行結(jié)果:

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

相關(guān)文章

  • win32com操作word之Application&Documents接口學習

    win32com操作word之Application&Documents接口學習

    這篇文章主要為大家介紹了win32com操作word之Application&Documents接口學習,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-01-01
  • 利用pyecharts繪制地理散點圖

    利用pyecharts繪制地理散點圖

    這篇文章主要介紹了利用pyecharts繪制地理散點圖,文章利用上海市7000+辦公樓項目,包括項目名稱,地理位置,每天的租金,建筑面積和項目所在的商圈,現(xiàn)在要讓這些項目按經(jīng)緯度落位到地圖上去,需要的朋友可以參考一下
    2022-03-03
  • Python 數(shù)據(jù)結(jié)構(gòu)之十大經(jīng)典排序算法一文通關(guān)

    Python 數(shù)據(jù)結(jié)構(gòu)之十大經(jīng)典排序算法一文通關(guān)

    排序算法可以分為內(nèi)部排序和外部排序,內(nèi)部排序是數(shù)據(jù)記錄在內(nèi)存中進行排序,而外部排序是因排序的數(shù)據(jù)很大,一次不能容納全部的排序記錄,在排序過程中需要訪問外存
    2021-10-10
  • pytorch實現(xiàn)Tensor變量之間的轉(zhuǎn)換

    pytorch實現(xiàn)Tensor變量之間的轉(zhuǎn)換

    今天小編就為大家分享一篇pytorch實現(xiàn)Tensor變量之間的轉(zhuǎn)換,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-02-02
  • conda虛擬環(huán)境下使用pyinstaller打包程序為exe文件全過程

    conda虛擬環(huán)境下使用pyinstaller打包程序為exe文件全過程

    pyinstaller是一個支持跨平臺使用的第三方庫,它可以將腳本執(zhí)行所需的模塊和庫,自動分析、收集并生成一個文件夾或者可執(zhí)行文件,這篇文章主要給大家介紹了關(guān)于conda虛擬環(huán)境下使用pyinstaller打包程序為exe文件的相關(guān)資料,需要的朋友可以參考下
    2023-12-12
  • pycharm?sql語句警告的處理

    pycharm?sql語句警告的處理

    這篇文章主要介紹了pycharm?sql語句警告的處理方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • 利用scikitlearn畫ROC曲線實例

    利用scikitlearn畫ROC曲線實例

    這篇文章主要介紹了利用scikitlearn畫ROC曲線實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-07-07
  • Python+Appium實現(xiàn)自動化清理微信僵尸好友的方法

    Python+Appium實現(xiàn)自動化清理微信僵尸好友的方法

    這篇文章主要介紹了Python+Appium實現(xiàn)自動化清理微信僵尸好友的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-02-02
  • Pycharm創(chuàng)建Django項目示例實踐

    Pycharm創(chuàng)建Django項目示例實踐

    本文主要介紹了Pycharm創(chuàng)建Django項目示例,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • Python淺析生成器generator的使用

    Python淺析生成器generator的使用

    生成器generator在循環(huán)過程中,按照某種算法推算數(shù)據(jù),不必創(chuàng)建容器存儲完整的結(jié)果,從而節(jié)省內(nèi)存空間。數(shù)據(jù)量越大,優(yōu)勢越明顯。以上作用也稱之為延遲操作或惰性操作,通俗的講就是在需要的時候才計算結(jié)果,而不是一次構(gòu)建出所有結(jié)果
    2022-07-07

最新評論