Opencv處理圖像之輪廓提取
更新時間:2020年03月21日 10:43:23 作者:代碼敵敵畏
這篇文章主要為大家詳細介紹了Opencv處理圖像之輪廓提取,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
本文實例為大家分享了Opencv處理圖像之輪廓提取,使用cvfindContours對圖像進行輪廓檢測,供大家參考,具體內(nèi)容如下
#include<iostream>
#include<opencv2/core/core.hpp>
#include<opencv2/highgui/highgui.hpp>
int main()
{
IplImage* img = cvLoadImage("E:\\test.bmp",0);
IplImage* imgColor = cvCreateImage(cvGetSize(img),8,3);
IplImage* contoursImage = cvCreateImage(cvSize(img->width,img->height),8,1);
cvNamedWindow("hui");
cvShowImage("hui",img);
cvThreshold(img,img,100,255,CV_THRESH_BINARY); //二值化圖像以100為閥值
cvNamedWindow("2");
cvShowImage("2",img);
CvSeq* contours = 0,* contoursTemp =0;
cvZero(contoursImage);
cvCvtColor(img,imgColor,CV_GRAY2BGR); //顏色轉(zhuǎn)化函數(shù)
//img :需要提前的圖片需要二值
//storage:存放的空間
//contours:指向輪廓提取的第一個輪廓
//sizeof(CvContour):采用的是哪一種結(jié)構(gòu)以及大小
//CV_RETR_LIST:輪廓存儲方式
//CV_CHAIN_APPROX_NONE:采用坐標集表示輪廓
CvMemStorage* storage = cvCreateMemStorage(0);
int total = cvFindContours(img,storage,&contours,sizeof(CvContour),CV_RETR_LIST,CV_CHAIN_APPROX_NONE,cvPoint(0,0));
printf("%d",total); //輸出總的輪廓數(shù)
contoursTemp = contours;
while(contoursTemp!=0){
for(int i = 0;i<contoursTemp->total;i++){
CvPoint *pt = (CvPoint*)cvGetSeqElem(contoursTemp,i);
cvSetReal2D(contoursImage,pt->y,pt->x,255.0);
cvSet2D(imgColor,pt->y,pt->x,cvScalar(0,0,255.0));
}
contoursTemp = contoursTemp->h_next;
}
cvNamedWindow("img");
cvShowImage("img",imgColor);
cvNamedWindow("contoursImage");
cvShowImage("contoursImage",contoursImage);
cvWaitKey(0);
return 0;
}

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
C++?opencv圖像處理使用cvtColor實現(xiàn)顏色轉(zhuǎn)換
這篇文章主要為大家介紹了C++?opencv圖像處理cvtColor實現(xiàn)顏色轉(zhuǎn)換的實現(xiàn)示例代碼,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-05-05
C語言中結(jié)構(gòu)體的內(nèi)存對齊規(guī)則講解
C 數(shù)組允許定義可存儲相同類型數(shù)據(jù)項的變量,結(jié)構(gòu)是 C 編程中另一種用戶自定義的可用的數(shù)據(jù)類型,它允許你存儲不同類型的數(shù)據(jù)項,本篇讓我們來了解C 的結(jié)構(gòu)體內(nèi)存對齊2022-05-05
C語言數(shù)據(jù)結(jié)構(gòu)之線性表的鏈式存儲結(jié)構(gòu)
線性表是最基本、最簡單、也是最常用的一種數(shù)據(jù)結(jié)構(gòu)。線性表(linear list)是數(shù)據(jù)結(jié)構(gòu)的一種,一個線性表是n個具有相同特性的數(shù)據(jù)元素的有限序列,這篇文章帶你學習下線性表的鏈式存儲結(jié)構(gòu)2021-11-11
C++虛函數(shù)表與類的內(nèi)存分布深入分析理解
對C++ 了解的人都應該知道虛函數(shù)(Virtual Function)是通過一張?zhí)摵瘮?shù)表(Virtual Table)來實現(xiàn)的。簡稱為V-Table。本文就將詳細講講虛函數(shù)表的原理與使用,需要的可以參考一下2022-08-08

