在特徵點檢測的時候,通常需要畫圓來表示特徵點的強度,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角度的弧...