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

OpenCV半小時(shí)掌握基本操作之對(duì)象測(cè)量

 更新時(shí)間:2021年09月01日 15:09:57   作者:我是小白呀  
這篇文章主要介紹了OpenCV基本操作之對(duì)象測(cè)量,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

【OpenCV】⚠️高手勿入! 半小時(shí)學(xué)會(huì)基本操作 ⚠️ 對(duì)象測(cè)量

概述

OpenCV 是一個(gè)跨平臺(tái)的計(jì)算機(jī)視覺(jué)庫(kù), 支持多語(yǔ)言, 功能強(qiáng)大. 今天小白就帶大家一起攜手走進(jìn) OpenCV 的世界.

在這里插入圖片描述

對(duì)象測(cè)量

對(duì)象測(cè)量可以幫助我們進(jìn)行矩陣計(jì)算:

  • 獲取弧長(zhǎng)與面積
  • 多邊形擬合
  • 計(jì)算圖片對(duì)象中心

原點(diǎn)距:

在這里插入圖片描述

中心距:

在這里插入圖片描述

圖像重心坐標(biāo):

在這里插入圖片描述

多邊形擬合

步驟:

  1. 讀取圖片
  2. 轉(zhuǎn)換成灰度圖
  3. 二值化
  4. 輪廓檢測(cè)
  5. 計(jì)算輪廓周長(zhǎng)
  6. 多邊形擬合

格式:

cv2.approxPolyDP(curve, epsilon, closed, approxCurve=None)

參數(shù):

  • curve: 輸入輪廓
  • epsilon: 逼近曲率, 越小表示相似逼近越厲害
  • closed: 是否閉合

在這里插入圖片描述

代碼:

import cv2
from matplotlib import pyplot as plt

# 讀取圖片
image = cv2.imread("polygon.jpg")
image_gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

# 二值化
ret, thresh = cv2.threshold(image_gray, 127, 255, cv2.THRESH_OTSU)

# 計(jì)算輪廓
contours, hierarchy = cv2.findContours(thresh, cv2.RETR_TREE, cv2.CHAIN_APPROX_NONE)

# 輪廓近似
perimeter = cv2.arcLength(contours[0], True)
approx = cv2.approxPolyDP(contours[0], perimeter * 0.1, True)

# 繪制輪廓
result1 = cv2.drawContours(image.copy(), contours, 0, (0, 0, 255), 2)
result2 = cv2.drawContours(image.copy(), [approx], -1, (0, 0, 255), 2)

# 圖片展示
f, ax = plt.subplots(1, 2, figsize=(12, 8))

# 子圖
ax[0].imshow(cv2.cvtColor(result1, cv2.COLOR_BGR2RGB))
ax[1].imshow(cv2.cvtColor(result2, cv2.COLOR_BGR2RGB))

# 標(biāo)題
ax[0].set_title("contour")
ax[1].set_title("approx")

plt.show()

輸出結(jié)果:

在這里插入圖片描述

計(jì)算對(duì)象中心

cv2.moments()可以幫助我們得到輪距, 從而進(jìn)一步計(jì)算圖片對(duì)象的中心.

格式:

cv2.moments(array, binaryImage=None)

參數(shù):

  • array: 輪廓
  • binaryImage: 是否把 array 內(nèi)的非零值都處理為 1, 默認(rèn)為 None

在這里插入圖片描述

例 1:

import numpy as np
import cv2

# 讀取圖片
image = cv2.imread("shape.jpg")
image_gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

# 二值化
ret, thresh = cv2.threshold(image_gray, 0, 255, cv2.THRESH_OTSU)

# 獲取輪廓
contours, hierarchy = cv2.findContours(thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)

# 遍歷每個(gè)輪廓
for i, contour in enumerate(contours):

    # 面積
    area = cv2.contourArea(contour)

    # 外接矩形
    x, y, w, h = cv2.boundingRect(contour)

    # 獲取論距
    mm = cv2.moments(contour)
    print(mm, type(mm))  # 調(diào)試輸出 (字典類型)

    # 獲取中心
    cx = mm["m10"] / mm["m00"]
    cy = mm["m01"] / mm["m00"]

    # 獲取
    cv2.circle(image, (np.int(cx), np.int(cy)), 3, (0, 255, 255), -1)
    cv2.rectangle(image, (x, y), (x + w, y + h), (0, 0, 255), 2)

# 圖片展示
cv2.imshow("result", image)
cv2.waitKey(0)
cv2.destroyAllWindows()

# 保存圖片
cv2.imwrite("result1.jpg", image)

輸出結(jié)果:

{'m00': 8500.5, 'm10': 1027805.8333333333, 'm01': 2991483.6666666665, 'm20': 131713199.41666666, 'm11': 365693040.4583333, 'm02': 1061366842.5833333, 'm30': 17848380183.95, 'm21': 47383693552.933334, 'm12': 131067057115.4, 'm03': 379419590249.80005, 'mu20': 7439941.251379013, 'mu11': 3989097.993609071, 'mu02': 8608236.862088203, 'mu30': 123631672.32175827, 'mu21': 66721478.995661736, 'mu12': -71778847.06811166, 'mu03': -153890589.33666992, 'nu20': 0.10296285178405724, 'nu11': 0.05520593397050295, 'nu02': 0.11913113104071384, 'nu30': 0.01855746134472764, 'nu21': 0.010015081443714638, 'nu12': -0.010774206599494254, 'nu03': -0.023099409797678556} <class 'dict'>
{'m00': 15986.0, 'm10': 6026846.0, 'm01': 5179910.0, 'm20': 2292703160.333333, 'm11': 1952864629.0, 'm02': 1698884573.6666665, 'm30': 879850714149.0, 'm21': 742898718990.0, 'm12': 640491821107.3334, 'm03': 563738081200.0, 'mu20': 20535469.371490955, 'mu11': -1620.4595272541046, 'mu02': 20449217.223528624, 'mu30': -223791.80407714844, 'mu21': 151823.5922050476, 'mu12': 209097.09715557098, 'mu03': -152351.75524902344, 'nu20': 0.08035724088041474, 'nu11': -6.34101194440178e-06, 'nu02': 0.08001972803837157, 'nu30': -6.926194062792776e-06, 'nu21': 4.698830090131295e-06, 'nu12': 6.471403538830498e-06, 'nu03': -4.715176353366703e-06} <class 'dict'>
{'m00': 11396.0, 'm10': 6176598.0, 'm01': 2597707.833333333, 'm20': 3349665027.0, 'm11': 1407949570.5833333, 'm02': 655725464.8333333, 'm30': 1817641012813.0, 'm21': 763562731879.1167, 'm12': 355401284084.75, 'm03': 178062030454.85, 'mu20': 1967338.8985610008, 'mu11': -324.81426215171814, 'mu02': 63580327.29723644, 'mu30': -21712.3154296875, 'mu21': 9988180.769364119, 'mu12': 186586.19526672363, 'mu03': -396148296.0755005, 'nu20': 0.015148662774911266, 'nu11': -2.501095121647356e-06, 'nu02': 0.48957347310563326, 'nu30': -1.5661200090835562e-06, 'nu21': 0.0007204523998327835, 'nu12': 1.3458554191159022e-05, 'nu03': -0.028574371768747265} <class 'dict'>
{'m00': 11560.0, 'm10': 4184863.0, 'm01': 1485772.0, 'm20': 1524366924.3333333, 'm11': 537875136.1666666, 'm02': 203000229.0, 'm30': 558641678337.5, 'm21': 195927630288.0, 'm12': 73490515262.5, 'm03': 29185458885.0, 'mu20': 9394750.564388752, 'mu11': 7292.807151079178, 'mu02': 12038426.579238743, 'mu30': -36898.54187011719, 'mu21': 58255.2828142643, 'mu12': 46557.39966964722, 'mu03': -74896.38109207153, 'nu20': 0.07030230843432154, 'nu11': 5.457315488828541e-05, 'nu02': 0.0900853271874644, 'nu30': -2.568115896721007e-06, 'nu21': 4.0545319755426715e-06, 'nu12': 3.2403664790463073e-06, 'nu03': -5.21274221530133e-06} <class 'dict'>
{'m00': 7136.5, 'm10': 931499.3333333333, 'm01': 837811.3333333333, 'm20': 126603461.91666666, 'm11': 109342970.95833333, 'm02': 104031211.58333333, 'm30': 17834967892.7, 'm21': 14861464047.05, 'm12': 13575875235.816666, 'm03': 13540680151.900002, 'mu20': 5018510.189567342, 'mu11': -13253.86603589356, 'mu02': 5673777.230110094, 'mu30': -177930.16611862183, 'mu21': 1921792.6864708662, 'mu12': 201480.14046394825, 'mu03': -4564410.182851791, 'nu20': 0.09853811951621429, 'nu11': -0.00026023879322029775, 'nu02': 0.11140424502299628, 'nu30': -4.135579833554871e-05, 'nu21': 0.00044667676380089435, 'nu12': 4.682945134828951e-05, 'nu03': -0.0010608927713634498} <class 'dict'>

在這里插入圖片描述

例 2:

import numpy as np
import cv2

# 讀取圖片
image = cv2.imread("shape.jpg")
image_gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

# 二值化
ret, thresh = cv2.threshold(image_gray, 0, 255, cv2.THRESH_OTSU)

# 獲取輪廓
contours, hierarchy = cv2.findContours(thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)

# 遍歷每個(gè)輪廓
for i, contour in enumerate(contours):

    # 面積
    area = cv2.contourArea(contour)

    # 外接矩形
    x, y, w, h = cv2.boundingRect(contour)

    # 獲取論距
    mm = cv2.moments(contour)

    # 獲取中心
    cx = mm["m10"] / mm["m00"]
    cy = mm["m01"] / mm["m00"]

    # 獲取
    cv2.circle(image, (np.int(cx), np.int(cy)), 3, (0, 255, 255), -1)
    cv2.rectangle(image, (x, y), (x + w, y + h), (0, 0, 255), 2)

    # 多變形擬合
    approxCurve = cv2.approxPolyDP(contour, 4, True)
    print(approxCurve.shape)

    # 圓圈
    if approxCurve.shape[0] > 10:
        cv2.drawContours(image, contours, i, (0, 255, 0), 2)  # 綠色

    # 4-10邊形
    if 10 >= approxCurve.shape[0] > 3:
        cv2.drawContours(image, contours, i, (240, 32, 160), 2)  # 紫色

    # 三角形
    if approxCurve.shape[0] == 3:
        cv2.drawContours(image, contours, i, (250, 206, 135), 2)  # 藍(lán)色


# 圖片展示
cv2.imshow("result", image)
cv2.waitKey(0)
cv2.destroyAllWindows()

# 保存圖片
cv2.imwrite("result2.jpg", image)

輸出結(jié)果:

(3, 1, 2)
(6, 1, 2)
(7, 1, 2)
(16, 1, 2)
(10, 1, 2)

在這里插入圖片描述

到此這篇關(guān)于OpenCV半小時(shí)掌握基本操作之對(duì)象測(cè)量的文章就介紹到這了,更多相關(guān)OpenCV對(duì)象測(cè)量?jī)?nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python count()函數(shù)實(shí)例詳解

    Python count()函數(shù)實(shí)例詳解

    count() 是Python的內(nèi)置函數(shù),可以「統(tǒng)計(jì)」字符串里指定「字符」或指定字符串出現(xiàn)的「次數(shù)」,這篇文章主要介紹了Python count()函數(shù)詳解,需要的朋友可以參考下
    2023-07-07
  • Python高階函數(shù)extract與extractall使用實(shí)例探究

    Python高階函數(shù)extract與extractall使用實(shí)例探究

    這篇文章主要為大家介紹了Python高階函數(shù)extract與extractall使用實(shí)例探究,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2024-01-01
  • python3 使用openpyxl將mysql數(shù)據(jù)寫(xiě)入xlsx的操作

    python3 使用openpyxl將mysql數(shù)據(jù)寫(xiě)入xlsx的操作

    這篇文章主要介紹了python3 使用openpyxl將mysql數(shù)據(jù)寫(xiě)入xlsx的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-05-05
  • Python用matplotlib庫(kù)畫(huà)圖中文和負(fù)號(hào)顯示為方框的問(wèn)題解決

    Python用matplotlib庫(kù)畫(huà)圖中文和負(fù)號(hào)顯示為方框的問(wèn)題解決

    matplotlib中畫(huà)圖的時(shí)候會(huì)遇到負(fù)號(hào)顯示為方框的問(wèn)題,下面這篇文章主要給大家介紹了關(guān)于Python用matplotlib庫(kù)畫(huà)圖中文和負(fù)號(hào)顯示為方框的問(wèn)題解決,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-07-07
  • 使用wxPython和pandas模塊生成Excel文件的代碼實(shí)現(xiàn)

    使用wxPython和pandas模塊生成Excel文件的代碼實(shí)現(xiàn)

    在Python編程中,有時(shí)我們需要根據(jù)特定的數(shù)據(jù)生成Excel文件,本文將介紹如何使用wxPython和pandas模塊來(lái)實(shí)現(xiàn)這個(gè)目標(biāo),文中通過(guò)代碼示例給大家講解的非常詳細(xì),具有一定的參考價(jià)值,需要的朋友可以參考下
    2024-05-05
  • PyTorch中torch.utils.data.Dataset的介紹與實(shí)戰(zhàn)

    PyTorch中torch.utils.data.Dataset的介紹與實(shí)戰(zhàn)

    PyTorch是一個(gè)開(kāi)源的Python機(jī)器學(xué)習(xí)庫(kù),基于Torch,用于自然語(yǔ)言處理等應(yīng)用程序,下面這篇文章主要給大家介紹了關(guān)于PyTorch中torch.utils.data.Dataset的介紹與實(shí)戰(zhàn),需要的朋友可以參考下
    2022-06-06
  • Python 判斷是否為質(zhì)數(shù)或素?cái)?shù)的實(shí)例

    Python 判斷是否為質(zhì)數(shù)或素?cái)?shù)的實(shí)例

    下面小編就為大家?guī)?lái)一篇Python 判斷是否為質(zhì)數(shù)或素?cái)?shù)的實(shí)例。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-10-10
  • Python如何判斷數(shù)獨(dú)是否合法

    Python如何判斷數(shù)獨(dú)是否合法

    這篇文章給大家介紹了如何利用Python判斷數(shù)獨(dú)是否合法,對(duì)大家學(xué)習(xí)python有一定的參考借鑒價(jià)值,有需要的可以一起來(lái)看看。
    2016-09-09
  • Python實(shí)戰(zhàn)小項(xiàng)目之Mnist手寫(xiě)數(shù)字識(shí)別

    Python實(shí)戰(zhàn)小項(xiàng)目之Mnist手寫(xiě)數(shù)字識(shí)別

    MNIST 數(shù)據(jù)集已經(jīng)是一個(gè)被”嚼爛”了的數(shù)據(jù)集, 很多教程都會(huì)對(duì)它”下手”, 幾乎成為一個(gè) “典范”. 不過(guò)有些人可能對(duì)它還不是很了解, 下面通過(guò)一個(gè)小實(shí)例來(lái)帶你了解它
    2021-10-10
  • pd.to_datetime中時(shí)間object轉(zhuǎn)換datetime實(shí)例

    pd.to_datetime中時(shí)間object轉(zhuǎn)換datetime實(shí)例

    本文主要介紹了pd.to_datetime中時(shí)間object轉(zhuǎn)換datetime實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-06-06

最新評(píng)論

科技| 石城县| 黄山市| 福鼎市| 西充县| 阿合奇县| 万载县| 江孜县| 麻栗坡县| 綦江县| 阿拉善盟| 深州市| 千阳县| 徐汇区| 司法| 安溪县| 同心县| 上栗县| 石棉县| 桦川县| 宿迁市| 遂溪县| 钟山县| 石屏县| 雷州市| 清流县| 三门峡市| 乃东县| 广南县| 白沙| 赣州市| 紫云| 宣化县| 广昌县| 讷河市| 竹山县| 平利县| 尼木县| 鲜城| 集贤县| 兴义市|