色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

OpenCV4之圖像的輪廓

OpenCV學堂 ? 來源:OpenCV學堂 ? 2024-01-02 12:24 ? 次閱讀

Part11. 圖像的輪廓

在該系列第三篇文章中,曾經簡單地介紹過輪廓和輪廓發現。

11.1 輪廓的基本概念

圖像的輪廓是指圖像中具有相同顏色灰度值的連續點的曲線。輪廓和邊緣是有聯系的,邊緣是輪廓的基礎,輪廓是邊緣的連續集合。

輪廓和邊緣的區別是:

輪廓是連續的,邊緣可以是連續的,也可以是離散的。

輪廓是完整的,邊緣可以是完整的,也可以是不完整的。

輪廓可以有各種形狀,邊緣通常是線性的。

21.2 輪廓發現和輪廓提取

輪廓發現是指在圖像中找到所有可能的輪廓。

輪廓提取是指從圖像中找到所有有效的輪廓和輪廓的具體信息

輪廓發現是輪廓提取的前提,輪廓提取在輪廓發現的基礎上進一步提取輪廓的形狀和位置信息等等。

下面的代碼,經過一系列操作找到二值圖像的有效輪廓后,獲取這些輪廓的最小外接矩形,最后用線在原圖中框出這些外接矩形,從而在原圖中找到比較明顯的蘋果。

#include
#include"opencv2/imgproc.hpp"
#include"opencv2/highgui.hpp"

usingnamespacestd;
usingnamespacecv;

boolascendSort(vectora,vectorb)
{
returncontourArea(a)>contourArea(b);
}

intmain(intargc,char**argv){
Matsrc=imread(".../apple.jpg");
imshow("src",src);

Mathsv,edge;
cvtColor(src,hsv,cv::COLOR_BGR2HSV);//BGR轉換到HSV色彩空間
imshow("hsv",hsv);

cv::Scalarlower_red(0,43,46);
cv::Scalarupper_red(10,255,255);//定義紅色的HSV范圍

Matmask;
inRange(hsv,lower_red,upper_red,mask);//通過inRange函數實現二值化
imshow("mask",mask);

Matkernel=getStructuringElement(MORPH_RECT,Size(15,15));
morphologyEx(mask,mask,MORPH_CLOSE,kernel);//形態學操作
morphologyEx(mask,mask,MORPH_OPEN,kernel);//形態學操作
imshow("morphology",mask);

vector>contours;
vectorhierarchy;

findContours(mask,contours,hierarchy,RETR_EXTERNAL,CHAIN_APPROX_SIMPLE);
sort(contours.begin(),contours.end(),ascendSort);//ascendingsort

for(size_ti=0;i

展示原圖

將原圖轉換成 HSV 類型,用于提取特定顏色。

hsv.png

通過 inRange 函數實現二值化。inRange 函數用于將圖像中的像素值限制在指定的范圍內,它會將滿足條件的像素設置為 255,不滿足條件的像素設置為 0,從而形成一個二值圖像。

二值化.png

對二值圖像進行一些形態學的操作,便于后續的輪廓分析。

形態學操作.png

通過 findContours() 函數進行輪廓發現。最后,篩選出有效的輪廓,并獲取最小外接矩形,用線畫出在原圖上展示出來。

Part22. 輪廓特征的分類

圖像的輪廓特征可以分為以下幾類:

基礎特征:面積、周長、質心、凸包、最小外接矩形等。這些特征可以直接從輪廓序列中計算得到。

矩特征:Hu 矩、中心矩、慣性矩等。這些特征可以用于描述輪廓的形狀和大小。

幾何特征:最小閉合圓、擬合橢圓等。這些特征可以用于描述輪廓的幾何形狀。

Part33. 輪廓的基礎特征

33.1 面積、周長、最小外接矩形

輪廓面積 contourArea()

輪廓周長 arcLength()

輪廓外接矩形 boundingRect()

輪廓最小外接矩形 minAreaRect()

下面的例子獲取圖中回形針的輪廓,以及輪廓的面積、周長、最小外接矩形等。

#include
#include"opencv2/imgproc.hpp"
#include"opencv2/highgui.hpp"

usingnamespacestd;
usingnamespacecv;

boolascendSort(vectora,vectorb)
{
returncontourArea(a)>contourArea(b);
}

intmain(intargc,char**argv){
Matsrc=imread(".../paperclip.jpg");
imshow("src",src);

Matgray,thresh;
cvtColor(src,gray,cv::COLOR_BGR2GRAY);
imshow("gray",gray);

threshold(gray,thresh,0,255,THRESH_BINARY_INV|THRESH_OTSU);
imshow("thresh",thresh);

vector>contours;
vectorhierarchy;

findContours(thresh,contours,hierarchy,RETR_EXTERNAL,CHAIN_APPROX_SIMPLE);
sort(contours.begin(),contours.end(),ascendSort);//ascendingsort

for(size_ti=0;i

執行結果:

area=101573,length=2461.71
area=41757.5,length=1256.08
area=41348,length=1152.56
area=39717.5,length=1616.13
area=37503,length=1230.47
area=36742.5,length=1037.21
area=4142,length=706.357

外接矩形是指可以包圍輪廓所有點的矩形,而最小外接矩形是指包含輪廓中所有點的最小矩形。

下面的例子,獲取圖中最大輪廓的外接矩形和最小外接矩形,分別用黃色和藍色表示。

#include"opencv2/imgproc.hpp"
#include"opencv2/highgui.hpp"

usingnamespacestd;
usingnamespacecv;

boolascendSort(vectora,vectorb)
{
returncontourArea(a)>contourArea(b);
}

intmain(intargc,char**argv){
Matsrc=imread(".../fruit.jpg");
imshow("src",src);

Matgray,thresh;
cvtColor(src,gray,cv::COLOR_BGR2GRAY);

threshold(gray,thresh,0,255,THRESH_BINARY|THRESH_OTSU);

vector>contours;
vectorhierarchy;
findContours(thresh,contours,hierarchy,RETR_EXTERNAL,CHAIN_APPROX_SIMPLE);
sort(contours.begin(),contours.end(),ascendSort);//ascendingsort

RotatedRectrrt=minAreaRect(contours[0]);//獲取最大輪廓的最小外接矩形

Point2fpt[4];
rrt.points(pt);
line(src,pt[0],pt[1],Scalar(255,0,0),8,8);
line(src,pt[1],pt[2],Scalar(255,0,0),8,8);
line(src,pt[2],pt[3],Scalar(255,0,0),8,8);
line(src,pt[3],pt[0],Scalar(255,0,0),8,8);

Rectrect=boundingRect(contours[0]);//獲取最大輪廓的外接矩形
rectangle(src,rect,Scalar(0,255,255),8,8);//繪制外接矩形

imshow("result",src);

waitKey(0);
return0;
}

通過上述例子可以看到,最小外接矩形能夠更精確地描述輪廓的形狀和大小。

外接矩形和最小外接矩形有各自的使用場景,例如在對象檢測中,可以使用外接矩形來粗略定位物體,而使用最小外接矩形來精確定位物體。

43.2 凸包

凸包(Convex Hull)是計算幾何(圖形學)中的概念。在一個實數向量空間 V 中,對于給定集合 X,所有包含 X 的凸集的交集 S 被稱為 X 的 凸包。

在二維歐幾里得空間中,凸包可想象為一條剛好包著所有點的橡皮圈。

平面的一個子集 S 被稱為是“凸”的,當且僅當對于任意兩點 p,s ∈S,線段 ps 都完全屬于S。

一個點集 P 的凸包CH(P),就是包含 P 的最小凸集——即包含P的所有凸集的交。

凸包的性質:

凸包是凸集。

凸包的周長是最小的。

凸包的面積是最小的。

凸包的質心是所有點的質心的均值。

OpenCV 提供了 convexHull() 函數尋找輪廓的凸包以及 isContourConvex() 函數用于判斷輪廓是否為凸輪廓。凸輪廓是指所有內角都小于或等于 180 度的輪廓。

#include
#include"opencv2/imgproc.hpp"
#include"opencv2/highgui.hpp"

usingnamespacestd;
usingnamespacecv;

intmain(intargc,char**argv){
Matsrc=imread(".../hand.jpg");
imshow("src",src);

Matgray,thresh;
cvtColor(src,gray,cv::COLOR_BGR2GRAY);

threshold(gray,thresh,0,255,THRESH_BINARY_INV|THRESH_OTSU);
imshow("thresh",thresh);

Matmask;
Matkernel=getStructuringElement(MORPH_RECT,Size(31,31));
morphologyEx(thresh,mask,MORPH_CLOSE,kernel);//形態學操作
imshow("morphology",mask);

vector>contours;
vectorhierarchy;

findContours(mask,contours,hierarchy,RETR_EXTERNAL,CHAIN_APPROX_SIMPLE);

vector>hull(contours.size());

Matdrawing=Mat::zeros(mask.size(),CV_8UC3);
for(size_ti=0;i

執行結果:

isHull=0
isHull=0

Part44. 總結

輪廓的基礎特征是計算機視覺中的重要工具,這些特征可以應用于對象檢測、形狀識別、測量等各種應用場景。后續還會介紹更多的輪廓特征。

審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 圖像
    +關注

    關注

    2

    文章

    1083

    瀏覽量

    40449
  • 代碼
    +關注

    關注

    30

    文章

    4779

    瀏覽量

    68524
  • OpenCV
    +關注

    關注

    31

    文章

    634

    瀏覽量

    41337

原文標題:OpenCV4之圖像的輪廓和輪廓的基礎特征

文章出處:【微信號:CVSCHOOL,微信公眾號:OpenCV學堂】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    OpenCV4.8 CUDA編程代碼教程

    OpenCV4支持通過GPU實現CUDA加速執行,實現對OpenCV圖像處理程序的加速運行,當前支持加速的模塊包括如下。
    的頭像 發表于 12-05 09:56 ?1023次閱讀
    <b class='flag-5'>OpenCV</b>4.8 CUDA編程代碼教程

    魯班貓0 -安裝opencv

    ON OPENCV_GENERATE_PKGCONFIG 因為opencv4默認不生成.pc文件,所以加上這句用于生成opencv4.pc文件,支持pkg-config功能。opencv4
    發表于 04-09 13:29

    CMake在Linux 6.1.1-1.0.0中搜索包opencv損壞了嗎?

    ] 但是這個文件不存在。 并嘗試使用圖像 imx-image-full 的 SDK,我收到以下錯誤: sysroots/armv8a-poky-linux/usr/lib/cmake/opencv4
    發表于 05-09 11:32

    基于輪廓圖像檢索

    基于輪廓圖像檢索:提出了一種針對多紋理圖像的基于輪廓和紋理分割的檢索策略.首先提取一幅圖像中各個紋理基元的
    發表于 10-31 09:03 ?12次下載

    創建包圍輪廓的矩形邊界初級圖像混合_《OpenCV3編程入門》書本配套源代碼

    OpenCV3編程入門》書本配套源代碼:創建包圍輪廓的矩形邊界初級圖像混合
    發表于 06-06 15:39 ?1次下載

    OpenCV3編程入門-源碼例程全集-創建包圍輪廓的矩形和圓形邊

    OpenCV3編程入門-源碼例程全集-創建包圍輪廓的矩形和圓形邊界框
    發表于 09-17 22:54 ?2次下載

    輪廓查找基礎_OpenCV3編程入門-源碼例程

    OpenCV3編程入門-源碼例程全集-輪廓查找基礎,感興趣的小伙伴們可以瞧一瞧。
    發表于 09-18 16:55 ?0次下載

    opencv輪廓提取原理與代碼的實現

    在檢測物體的輪廓時,我們通常會使用到opencv中的findcontour和drawcontour,比較常用而且效果不錯。那么findcontour是基于什么原理來實現輪廓的提取呢?在目標識別中我們
    發表于 12-04 16:29 ?3.2w次閱讀

    opencv用序列存儲輪廓

    輪廓到底是什么?一個輪廓一般對應一系列的點,也就是圖像中的一條曲線.表示的方法可能根據不同情況而有所不同.
    的頭像 發表于 02-02 17:25 ?4258次閱讀
    <b class='flag-5'>opencv</b>用序列存儲<b class='flag-5'>輪廓</b>

    如何才能提取二值圖像中的最大輪廓OpenCV程序免費下載

      本文檔的主要內容詳細介紹的是如何才能提取二值圖像中的最大輪廓OpenCV程序免費下載。
    發表于 10-10 16:49 ?3次下載
    如何才能提取二值<b class='flag-5'>圖像</b>中的最大<b class='flag-5'>輪廓</b><b class='flag-5'>OpenCV</b>程序免費下載

    基于opencv4和Yolo-Fastest,實現PC和單片機通信,控制步進電機捕獲目標

    效果視頻 基于opencv4和yolo,實現PC和單片機通信,控制步進電機捕獲目標
    發表于 11-23 17:36 ?16次下載
    基于<b class='flag-5'>opencv4</b>和Yolo-Fastest,實現PC和單片機通信,控制步進電機捕獲目標

    OpenCV中幾何形狀識別與測量

    什么是輪廓,簡單說輪廓就是一些列點相連組成形狀、它們擁有同樣的顏色、輪廓發現在圖像的對象分析、對象檢測等方面是非常有用的工具,在OpenCV
    的頭像 發表于 06-02 15:31 ?1921次閱讀

    如何在Raspberry Pi 3上安裝OpenCV4

    今天我們將學習如何在 Raspberry Pi 3 上安裝 OpenCV4 庫,以便我們可以將其用于計算機視覺應用程序。這將允許 OpenCV 在像 Pi 這樣的便攜式設備上運行,從而打開許多可能性的大門。所以讓我們開始吧
    的頭像 發表于 09-08 16:09 ?1593次閱讀
    如何在Raspberry Pi 3上安裝<b class='flag-5'>OpenCV4</b>庫

    學習OpenCV4的系統化路線圖

    OpenCV4發布測試版本開始,作者就一直關注!根據自己近十年圖像處理OpenCV開發相關工作經驗,花了七個月的時間,針對OpenCV4、精心選擇
    的頭像 發表于 07-05 11:30 ?632次閱讀
    學習<b class='flag-5'>OpenCV4</b>的系統化路線圖

    OpenCV4圖像分析BLOB特征分析

    BLOB是圖像中灰度塊的一種專業稱呼,更加變通一點的可以說它跟我們前面二值圖像分析的聯通組件類似,通過特征提取實現常見的各種灰度BLOB對象組件檢測與分離。使用該檢測器的時候,可以根據需要輸入不同參數,得到的結果跟輸入的參數息息相關。
    的頭像 發表于 12-28 12:28 ?1332次閱讀
    <b class='flag-5'>OpenCV4</b><b class='flag-5'>圖像</b>分析<b class='flag-5'>之</b>BLOB特征分析
    主站蜘蛛池模板: 97人妻精品全国免费视频| 亚洲区偷拍自拍29P| 手机在线看片欧美亚洲| 十二月综合缴缴情| 无人影院在线播放视频| 校园刺激全黄H全肉细节文| 亚欧乱亚欧乱色视频| 亚洲色大成网站WWW永久麻豆 | 年轻的女职工在线观看| 青青草原网址| 午夜福利网国产A| 亚洲日本欧美天堂在线| 18 japanese宾馆直播| XXX老姥群交| 国产女合集小岁9三部| 久久精品国产欧美| 暖暖高清视频免费| 天天干夜夜叭| 在线观看亚洲AV无码每日更新| av狼新人开放注册区| 国产精品久久免费视频 | 国产午夜精品久久理论片| 九九热这里有精品| 欧美不卡一区二区三区| 我的美女房东未删减版免费观看| 亚洲熟妇色自偷自拍另类| 97久久伊人精品影院| 国产精品成久久久久三级四虎| 精品无码乱码AV| 欧美怡红院视频一区二区三区| 午夜宅宅伦电影网| 4399亚洲AV无码V无码网站| 动漫人物差差差30分钟免费看| 好吊妞在线成人免费| 女女破视频在线观看| 小xav导航| 99九九精品视频| 狠狠色狠狠色综合日日32| 女人被躁到高潮嗷嗷叫69| 亚洲国产黄色| 被老师按在办公桌吸奶头|