OpenCV的circle函式畫圓的小技巧

2021-07-07 08:34:10 字數 1120 閱讀 6966

在特徵點檢測的時候,通常需要畫圓來表示特徵點的強度,opencv很方便的提供了circle函式來畫圓,函式簽名

cv_exports_w void circle(cv_in_out mat& img, point center, int radius,const scalar& color, 

int thickness=1,int linetype=8, int shift=0);

一般來說,我們只關心前面4個引數,給定影象,中心點,半徑和顏色就可以畫乙個圓,最近在研究opencv原始碼的時候,發現了乙個很好玩的結果,先看兩張影象

這是我在做尺度不變性harris角點檢測得到的結果,可以看到右邊圖中的圓更加飽滿更加好看,左邊圖中的圓鋸齒狀非常明顯,下面是對應的**

//(a)圖

circle(imgsrc, point(c, r),3*round(dvecsigma[i])*,scalar(0, 255, 0);

//(b)圖

circle(imgsrc, point(c*(1

<<4), r*(1

<<4)),

3*round(dvecsigma[i])*(1<<4), scalar(0, 255, 0), 1,cv_aa,4);

和(a)相比,(b)將中心點座標和半徑同時乘以1<<4(即16),再將linetype設為cv_aa,同時將shift設定為4,就可以將圓畫的更加好看,下面是opencv畫sift特徵點的原始碼,我的靈感就是從這裡面來的,檔案位置opencvdir/sources/modules/features2d/src\draw.cpp

//就是這個變數

const

int draw_shift_bits = 4;

const

int draw_multiplier = 1

<< draw_shift_bits;

namespace cv

...

有哪位大神知道原理的,希望不吝賜

OpenCV畫圓 點函式circle

畫乙個圓 c void circle inputoutputarray img,point center,int radius,const scalar color,int thickness 1,int linetype line 8 int shift 0 引數說明 img 畫圓的影象 cent...

circle 拷貝建構函式

描述 定義乙個circle類,屬性為半徑,周長和面積。要求定義建構函式和拷貝建構函式及其他成員函式,實現以下功能 根據輸入的半徑構造乙個對 能根據已知的物件生成乙個的新物件,新物件的半徑是個原物件半徑的兩倍 能獲取物件屬性值 輸入 乙個圓的半徑 輸出 先複製這個物件 輸出複製後物件的半徑,周長,面積...

turtle庫的circle函式的應用

turtle.circle radius,extent,steps radius是半徑的長度,以逆時針為正,順時針為負,extent是圓心角的度數 可為負 steps為線段條數 定義 turtle.circle radius,extent none 作用 根據半徑radius繪製extent角度的弧...