簡體   English   中英

如何采樣輪廓序列

[英]How to sampling the contour's sequence

我使用opencv sobel濾鏡查找圖像的輪廓。

現在,我想對輪廓序列進行采樣,例如{(0,1),(2,2),(3,4)...}。

我需要可以自動分離每條曲線的算法。

opencv中是否有任何算法,或者我必須自己做?

我只認為通過深度優先搜索來掃描圖像並記錄白點的簡單方法,但我認為它的性能不好。

findContours什么問題?

給定一個邊緣圖像, findContours的目的是為您提供兩個結構列表,其中一個列表為您提供每個輪廓的像素坐標,而另一個列表為您提供屬於每個檢測到的輪廓的各種相關信息。

在C ++中,它很簡單,如下所示。 假設您的圖像存儲在cv::Mat結構中,您將執行以下操作:

#include "opencv2/imgproc/imgproc.hpp"
using namespace cv;

Mat edge_output;  // Declare edge image
// ...
// ...
// Perform sobel detector on image and store in edge_output
// ...
//

// Declare a vector of Points and a vector to store the hierarchy
vector<vector<Point> > contours;
vector<Vec4i> hierarchy;

// Find contours
findContours(edge_output, contours, hierarchy, CV_RETR_TREE, CV_CHAIN_APPROX_NONE);

hierarchy包含有關圖像拓撲的信息。 您可以閱讀此頁面,了解有關層次結構的詳細信息: http : //docs.opencv.org/trunk/doc/py_tutorials/py_imgproc/py_contours/py_contours_hierarchy/py_contours_hierarchy.html

但是,您要關注的是contours 這將是一個包含點向量的向量。 contours每個元素都會為您提供一個Point結構列表,這些結構包含特定輪廓的(x,y)坐標。 CV_RETR_TREE為您提供每個輪廓的完整信息,而CV_CHAIN_APPROX_NONE為您提供沿輪廓的所有可能點。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM