Я работаю над поиском контуров в проекте C# EmguCV. Для этого проекта важно получить данные иерархии контуров. Я использовал этот метод раньше в проекте C++ OpenCV, поэтому я понимаю работу метода FindContours
и информацию Hierarchy
. Пожалуйста, найдите соответствующий код:C# - Emgu CV - данные иерархии FindContours всегда равны нулю
Mat grayImage = new Mat(originalImage.Size, originalImage.Depth, 1);
Mat edges = new Mat(originalImage.Size, originalImage.Depth, 1);
CvInvoke.CvtColor(originalImage, grayImage, ColorConversion.Bgr2Gray);
CvInvoke.Canny(grayImage, edges, 100, 200, 3);
var contours = new VectorOfVectorOfPoint();
Mat hierarchy = new Mat();
CvInvoke.FindContours(edges, contours, hierarchy, RetrType.Tree, ChainApproxMethod.ChainApproxSimple);
Когда я запустил этот код, контуры найдены, как ожидалось. Также Hierarchy Mat
объект кажется, чтобы получить заселена, как ожидалось, а именно 1 x size of outputResult x 4
(см картинку ниже), но данные в этом объекте остается null
:
Screenshot of hierarchy mat object
Я не смог найти ответ о том, как извлечь данные контура иерархии (дерева) этого объекта. Я видел в other StackOverflow posts (see also the comments), что другие борется и/или что могут быть ошибки в библиотеке EmguCV 3.x, но я не смог найти ответ.
Мой вопрос: таким образом, нормально, что поле данных в объекте Hierarchy Mat
равно null
?
- Если да: как я могу извлечь соответствующие иерархические данные из этого объекта
Mat
? - Если нет: есть ли способ обходить эту ошибку, где иерархические данные
null
? Можно ли, например, вернуться к EmguCV 2.x?