日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

opencv —— approxPolyDP 生成逼近曲线

發(fā)布時間:2023/12/13 综合教程 31 生活家
生活随笔 收集整理的這篇文章主要介紹了 opencv —— approxPolyDP 生成逼近曲线 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

生成逼近曲線:approxPolyDP 函數(shù)

該函數(shù)采用 Douglas-Peucker 算法(也稱迭代終點擬合算法)。可以有效減少多邊形曲線上點的數(shù)量,生成逼近曲線,簡化后繼操作。

經(jīng)典的 Douglas-Peucker 算法描述如下:

在曲線首尾兩點 A,B 之間連接一條直線 AB,該直線為曲線的弦;
得到曲線上離該直線段距離最大的點 C,計算其與 AB 的距離 d;
比較該距離與預(yù)先給定的閾值 threshold 的大小,如果小于 threshold,則該直線段作為曲線的近似,該段曲線處理完畢。
如果距離大于閾值,則用 C 將曲線分為兩段 AC 和 BC ,并分別對兩段曲線進行 1~3 的處理。
當(dāng)所有曲線都處理完畢時,依次連接各個分割點形成的折線,即可以作為曲線的近似。

void approxPolyDP(InputArray curve, OutputArray approxCurve, double epsilon, bool closed);

curve,輸入的二維點集,可以為 vector 或 Mat 類型。
approxCurve,多邊形逼近的結(jié)果,其類型應(yīng)該和輸入的二維點集類型一致。
epsilon,逼近的精度,設(shè)定的原始曲線與近似曲線之間的最大距離,即上文提到的的閾值。
closed,如果為真,則近似的曲線為封閉曲線(第一個頂點和最后一個頂點相連),否則,近似的曲線不封閉。

代碼示例:

//作品《抽象的牛》
#include<opencv.hpp> #include<iostream> using namespace cv; using namespace std; int main() { Mat src = imread("C:/Users/齊明洋/Desktop/6.jpg"); imshow("src", src); Mat gray, bin_img; cvtColor(src, gray, COLOR_BGR2GRAY); //將原圖轉(zhuǎn)換為灰度圖 imshow("gray", gray); //二值化 threshold(gray, bin_img, 150, 255, THRESH_BINARY_INV); Mat kernel = getStructuringElement(MORPH_RECT, Size(3, 3)); morphologyEx(bin_img, bin_img, MORPH_CLOSE, kernel, Point(-1, -1), 2);//閉操作,先膨脹后腐蝕,消除小黑點 imshow("bin_img", bin_img); //尋找輪廓 vector<vector<Point> >contours; findContours(bin_img, contours, RETR_TREE, CHAIN_APPROX_NONE); //生成逼近曲線 Mat dst = Mat::zeros(src.size(), src.type()); RNG rngs = { 12345 }; vector<vector<Point> >approx_contours(contours.size());//存放逼近曲線的數(shù)組 for (int i = 0; i < contours.size(); i++) { approxPolyDP(contours[i], approx_contours[i], 40, true); Scalar colors = Scalar(rngs.uniform(0, 255), rngs.uniform(0, 255), rngs.uniform(0, 255)); drawContours(dst, approx_contours, i, colors, 3); } imshow("dst", dst); waitKey(0); }

效果演示:

借鑒博客:https://blog.csdn.net/u013925378/article/details/86075230

總結(jié)

以上是生活随笔為你收集整理的opencv —— approxPolyDP 生成逼近曲线的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。