本文的主要參考為官方文件opencv249-fitellipse和部落格-opencv中的橢圓擬合
以及《learning opencv 3》page424-425
opencv中提供的橢圓擬合api如下:
rotatedrect fitellipse(inputarray points)
輸入:二維點集,
要求擬合的點至少為6個點。儲存在std::vector<> or mat
處理:該函式使用的是最小二乘的方法進行擬合的。參考**:《direct least square fitting of ellipses》
輸出:rotatedrect 型別的矩形,是擬合出橢圓的最小外接矩形。
繪製橢圓用到的api如下,官方文件opencv249-ellipse
void ellipse(mat& img, point center, size axes, double angle, double startangle, double endangle, const scalar& color, int thickness=1, int linetype=8, int shift=0)
void ellipse(mat& img, const rotatedrect& box, const scalar& color, int thickness=1, int linetype=8)
對應的引數可參見下圖:
示例**如下:
imshow("原圖", src_image);
//輪廓
vector> contours;
//使用canny檢測出邊緣
mat edge_image;
canny(src_image,edge_image,30,70);
imshow("canny邊緣",edge_image);
//邊緣追蹤,沒有儲存邊緣的組織結構
mat cimage = mat::zeros(edge_image.size(), cv_8uc3);
for(size_t i = 0; i < contours.size(); i++)
imshow("擬合結果", cimage);
waitkey();
return 0;
}
opencv 橢圓擬合
include cv.h include highgui.h include using namespace std int slider pos 23 閾值 iplimage image02 0,image03 0,image04 0 void process image int h int ma...
opencv橢圓擬合
目標 通過橢圓擬合求出目標長短軸 思路 先用canny計算出待擬合橢圓的邊界座標,opencv中fitellipse函式可通過最小二乘法來擬合乙個橢圓使得點盡量在橢圓上。如上圖,右邊是拖過canny計算出邊界點資訊,左圖是擬合出來的橢圓。以下作引數說明 def fit ellipse img edg...
opencv中的橢圓擬合
首先貼乙個最簡單的程式 訪問 建立乙個用於繪製影象的空白圖 cv mat image cv mat ones 480,640,cv 8uc3 設定藍色背景 image.setto cv scalar 100,0,0 輸入擬合點 std vectorpoints points.push back cv...