0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

二值圖像分析最常見的方式

OpenCV學(xué)堂 ? 來(lái)源:OpenCV學(xué)堂 ? 作者:OpenCV學(xué)堂 ? 2022-08-12 10:45 ? 次閱讀

輪廓屬性

二值圖像分析最常見的一個(gè)主要方式就是輪廓發(fā)現(xiàn)輪廓分析,其中輪廓發(fā)現(xiàn)的目的是為輪廓分析做準(zhǔn)備,經(jīng)過(guò)輪廓分析我們可以得到輪廓各種有用的屬性信息、常見的如下:

輪廓面積

輪廓周長(zhǎng)

輪廓幾何矩

輪廓的最小外接矩形

輪廓的最大外接矩形

輪廓的最小外接圓

輪廓的最小外接三角形

輪廓擬合(支持?jǐn)M合直線、橢圓、圓)

輪廓的凸包

輪廓層次信息提取

多邊形逼近

計(jì)算歐拉數(shù)

函數(shù)介紹

OpenCV中提供大量輪廓分析函數(shù),通過(guò)這些函數(shù)我們可以方便快捷的得到輪廓的各種有用屬性信息、高效完成各種二值圖像分析需求,下面是我總結(jié)的一些常用的函數(shù)列表與說(shuō)明。

OpenCV中輪廓發(fā)現(xiàn)函數(shù)如下:

voidcv::findContours(
InputArrayimage,
OutputArrayOfArrayscontours,
OutputArrayhierarchy,
intmode,
intmethod,
Pointoffset=Point()
)

參數(shù)解釋如下:

image: 輸入圖像、八位單通道的,背景為黑色
contours: 得到的輪廓圖像
hierarchy: 層次圖像,根據(jù)需要提取輪廓層次信息
mode: 決定提取到層次信息內(nèi)容,是多層還是單層
method: 每個(gè)輪廓的編碼信息
offset: 表示輪廓偏移,默認(rèn)為0

輪廓分析相關(guān)的常用函數(shù)

//計(jì)算輪廓面積
doublecv::contourArea(
InputArraycontour,
booloriented=false
)
//計(jì)算輪廓周長(zhǎng)
doublecv::arcLength(
InputArraycurve,
boolclosed
)
//計(jì)算幾何矩與中心距
Momentscv::moments(
InputArrayarray,
boolbinaryImage=false
)
//計(jì)算最小外接矩形
RotatedRectcv::minAreaRect(
InputArraypoints
)
//計(jì)算最大外接矩形
Rectcv::boundingRect(
InputArrayarray
)
//計(jì)算最小外接圓/擬合圓
voidcv::minEnclosingCircle(
InputArraypoints,
Point2f¢er,
float&radius
)
//計(jì)算最小外接三角形/擬合三角形
doublecv::minEnclosingTriangle(
InputArraypoints,
OutputArraytriangle
)
//擬合直線
voidcv::fitLine(
InputArraypoints,
OutputArrayline,
intdistType,
doubleparam,
doublereps,
doubleaeps
)
//擬合橢圓
RotatedRectcv::fitEllipse(
InputArraypoints
)
//計(jì)算凸包
voidcv::convexHull(
InputArraypoints,
OutputArrayhull,
boolclockwise=false,
boolreturnPoints=true
)
//多邊形逼近-逼近真實(shí)形狀
voidcv::approxPolyDP(
InputArraycurve,
OutputArrayapproxCurve,
doubleepsilon,
boolclosed
)

靈活使用上述輪廓屬性信息,可以實(shí)現(xiàn)對(duì)二值圖像的幾何形狀判別、測(cè)量、面積過(guò)濾、獲取每個(gè)對(duì)象的幾何屬性包括面積、周長(zhǎng)、編碼點(diǎn)、形狀、層次/位置信息、歐拉數(shù)、中心位置、傾斜角度。

綜合運(yùn)用代碼演示

2020年 以前我分享過(guò)一些綜合使用的例子,列表如下(都看過(guò)你就贏了):

二值圖像分析案例精選

OpenCV二值圖像案例分析精選 | 第二期

OpenCV輪廓層次分析實(shí)現(xiàn)歐拉數(shù)計(jì)算

OpenCV尋找復(fù)雜背景下物體的輪廓

如何識(shí)別出輪廓準(zhǔn)確的長(zhǎng)和寬

OpenCV中幾何形狀識(shí)別與測(cè)量

OpenCV中BLOB特征提取與幾何形狀分類

OpenCV直線擬合檢測(cè)

OpenCV中實(shí)現(xiàn)曲線與圓擬合

這里再分享一個(gè)硬幣計(jì)數(shù)的例子!

原圖如下:

代碼如下:

//加載圖像
Matimg=imread("D:/CoinsB.png");
imshow("OriginalImage",img);

//閾值化操作
Matgray,binary;
cvtColor(img,gray,COLOR_BGR2GRAY);
floatt=threshold(gray,binary,0,255,THRESH_BINARY|THRESH_OTSU);
imshow("binary",binary);
imwrite("D:/binary1.png",binary);

//形態(tài)學(xué)操作
Matse=getStructuringElement(MORPH_RECT,Size(3,3));
morphologyEx(binary,binary,MORPH_OPEN,se,Point(-1,-1));

//輪廓發(fā)現(xiàn)
vectorhireachy;
vector>contours;
bitwise_not(binary,binary);
findContours(binary,contours,hireachy,RETR_EXTERNAL,CHAIN_APPROX_SIMPLE,Point());
Matresult=img.clone();
Point2fcenter;
floatradius;

//輪廓分析
for(size_tt=0;t

審核編輯:彭靜
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4256

    瀏覽量

    62223
  • 二值圖像
    +關(guān)注

    關(guān)注

    0

    文章

    14

    瀏覽量

    8708
  • 輪廓分析
    +關(guān)注

    關(guān)注

    0

    文章

    2

    瀏覽量

    6089

原文標(biāo)題:OpenCV | 二值圖像分析的技巧都在這里

文章出處:【微信號(hào):CVSCHOOL,微信公眾號(hào):OpenCV學(xué)堂】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    電動(dòng)車電池最常見的幾種損壞情況()

    電動(dòng)車電池最常見的幾種損壞情況() 對(duì)導(dǎo)致電池失效的六種情
    發(fā)表于 11-16 14:04 ?1w次閱讀

    變頻器最常見的十大故障現(xiàn)象和分析處理實(shí)例

    變頻器是自動(dòng)化工廠中最常見的電氣設(shè)備下面我們一起來(lái)看看變頻器最常見的十大故障現(xiàn)象和分析處理實(shí)例。
    發(fā)表于 09-14 09:11 ?5w次閱讀

    labview中化結(jié)果顯示的幾種方式對(duì)比

    labview中常見圖像預(yù)處理操作化的結(jié)果比較特殊,
    發(fā)表于 08-16 18:19

    基于邊界特征的圖像化方法應(yīng)用研究

    基于邊界特征的圖像化方法應(yīng)用研究:邊界特征是圖像的重要信息,閾值是區(qū)分圖像象素點(diǎn)的主要依據(jù)。研究了基于
    發(fā)表于 11-08 16:28 ?26次下載

    圖像目標(biāo)鄰域點(diǎn)法邊界跟蹤算法

    分析圖像識(shí)別中常用的輪廓跟蹤算法,并指出其缺點(diǎn)。在提出目標(biāo)鄰域點(diǎn)概念的基礎(chǔ)上,提供一種對(duì)
    發(fā)表于 05-25 15:02 ?40次下載
    <b class='flag-5'>二</b><b class='flag-5'>值</b><b class='flag-5'>圖像</b>目標(biāo)鄰域點(diǎn)法邊界跟蹤算法

    基于圖像分塊的局部閾值化方法

    針對(duì)目前局部閾值化結(jié)果存在目標(biāo)虛假或斷裂的缺陷,提出了一種基于圖像分塊的局部閾值化方法。首先,將
    發(fā)表于 12-05 17:11 ?4次下載
    基于<b class='flag-5'>圖像</b>分塊的局部閾值<b class='flag-5'>二</b><b class='flag-5'>值</b>化方法

    圖像 FPGA腐蝕算法解析

    圖像的腐蝕算法過(guò)程中我們使用圖像3x3圖像
    發(fā)表于 03-21 11:14 ?5257次閱讀
    <b class='flag-5'>二</b><b class='flag-5'>值</b><b class='flag-5'>圖像</b> FPGA腐蝕算法解析

    機(jī)器視覺的圖像化詳細(xì)分析

    傳統(tǒng)的機(jī)器視覺通常包括兩個(gè)步驟——預(yù)處理和物體檢測(cè)。而溝通者的橋梁則是圖像分割(Image Segmentation)[1]。圖像分割通過(guò)簡(jiǎn)化或改變圖像的表示形式,使得
    的頭像 發(fā)表于 06-16 09:22 ?1w次閱讀

    LabVIEW:如何顯示化后的圖像

    LabVIEW中常見圖像預(yù)處理操作化的結(jié)果比較特殊,
    的頭像 發(fā)表于 12-06 09:40 ?9695次閱讀

    視頻圖像三插方式的結(jié)果

    方式有 最近點(diǎn)插,線性插,蘭索斯插 。 ? 下面簡(jiǎn)要介紹,并對(duì)比三種插方式的結(jié)果。 ?
    的頭像 發(fā)表于 11-09 15:39 ?1817次閱讀

    五種最常見的五種電機(jī)冷卻方式介紹

    電機(jī)的冷卻方式通常根據(jù)其功率、運(yùn)行環(huán)境和設(shè)計(jì)要求來(lái)選擇。以下是五種最常見的五種電機(jī)冷卻方式
    發(fā)表于 08-16 09:29 ?4592次閱讀

    OpenCV圖像分析

    圖像分析最常見的一個(gè)主要方式就是輪廓發(fā)現(xiàn)與輪廓分析
    的頭像 發(fā)表于 10-20 12:25 ?532次閱讀

    圖像分析的典型案例

    最近一直有人向我提問很多圖像分析相關(guān)的問題,特別選擇了兩個(gè)典型的輪廓分析問題。進(jìn)行分析與編碼
    的頭像 發(fā)表于 12-06 10:54 ?459次閱讀

    圖像連通區(qū)域的標(biāo)記原理

    圖像是一種由黑白兩色組成的圖像,其像素只有兩種可能,分別對(duì)應(yīng)黑色和白色。在
    的頭像 發(fā)表于 01-05 14:28 ?703次閱讀

    最常見的直流負(fù)載工作方式

    最常見的直流負(fù)載工作方式? 直流負(fù)載工作方式是指在直流電路中使用的各種負(fù)載方式。直流負(fù)載是用于測(cè)試和測(cè)量直流電源輸出能力和能效的設(shè)備,可以模擬真實(shí)負(fù)載條件下的電流和功率需求。本文將詳細(xì)
    的頭像 發(fā)表于 01-18 15:12 ?617次閱讀