用cvseq的函式建立圓和矩形,這兩個影象用點序列來表示。
有關序列的讀寫方法可以自行學習,這裡只給出乙個示例
#include
#include
#include
using
namespace
std;
using
namespace cv;
#define cvx_red cv_rgb(0xff, 0x00, 0x00)
#define cvx_green cv_rgb(0x00, 0xff, 0x00)
#define cvx_blue cv_rgb(0x00, 0x00, 0xff)
void drawbox(iplimage* img)
/*2、計算cvbox2d結構表示矩形的4頂點*/
cvboxpoints(box, point); //計算二維盒子頂點,把box的點賦值給point
/*3、把float型別的點轉化成int型別*/
cvpoint pt[4];
for ( i=0; i<4; i++)
/*4、開闢乙個記憶體管理器並建立乙個序列*/
cvmemstorage* store = cvcreatememstorage(0);
cvseq* seq = cvcreateseq(cv_seq_eltype_point | cv_seq_kind_curve | cv_seq_flag_closed,sizeof(cvcontour),sizeof(cvpoint),store);
/*5、資料的儲存和提取*/
for (int j = 0; j < 4; j++)
for (int j = 0; j < seq->total; j++)
/*6、繪製圖形*/
cvdrawcontours(img,seq,cv_rgb(255,255,255),cv_rgb(255,255,255),1,3,8);
cvshowimage("box", img);
cvreleasememstorage(&store);
} void drawcircle(iplimage* img)
for(int x=25+50; x>25; x--)
for (int j = 0; j < seq->total; j++)
cvdrawcontours(img,seq,cv_rgb(255,255,255),cv_rgb(255,255,255),1,3,8);
cvshowimage("circle", img);
cvreleasememstorage(&store);
} int main()
結果如下:
21 22輪廓繪製(EmguCV學習)
輪廓近似方法 3 cvinvoke.drawcontours 函式 contouridx 控制繪製當前輪廓i,如果為負值,則繪製所有輪廓 thickness 繪製線寬,如果為負,則填充輪廓 hierarchy 輪廓的層次結構資訊 maxlevel 控制是否繪製當前輪廓之外的輪廓 需要有hierarc...
(26)輪廓發現
輪廓發現 區別於輪廓和邊緣的概念,輪廓也是有一定梯度層次的,有大的小的不同的輪廓 輪廓發現是基於影象邊緣提取的基礎尋找物件輪廓的方法。所以邊緣提取的閾值選定會影響最終輪廓發現結果。api介紹 findcontours發現輪廓 在灰度影象上進行輪廓發現 cv findcontours inputout...
27 輪廓發現
輪廓發現是基於影象邊緣提取的基礎,尋找物件輪廓的方法。所以邊緣提取的閾值的選定會影響最終輪廓發現的結果。include include include using namespace cv using namespace std int thresholdvlaue 100 int threshol...