vb.net — Использование OpenCV Mat в качестве массива: VB против переполнения стека

Я использую VS2015, EmguCV 3 и VB, и пытаюсь перевести некоторый код C ++.

C ++

vector<vector<Point> > contours;
vector<Vec4i> hierarchy;
findContours(bw, contours, hierarchy, CV_RETR_LIST, CV_CHAIN_APPROX_NONE);
for (size_t i = 0; i < contours.size(); ++i)
{...}

Я пытаюсь использовать некоторый код ориентации объекта, данный полностью Вот. В основном код собирается сказать мне угол, под которым объект ориентирован на изображении. К сожалению, это код C ++, и мозги разработчиков VB могут взорваться при виде некоторого синтаксиса C ++. Любая помощь, избегающая необходимости очищать мой экран снова, будет приветствоваться. Взрывчатый материал был vector<vector<point> > contours; в данном конкретном случае, и мой вопрос о том, как его перевести.

Я получил это далеко:

VB

Imports Emgu.CV
Imports Emgu.CV.Structure
...
contours = New Mat
hierarchy = New Mat
CvInvoke.FindContours(m, contours, hierarchy, CvEnum.RetrType.List, CvEnum.ChainApproxMethod.ChainApproxNone)

Я использую EmguCV 3. Это утверждает, что FindContours принимает image As IInputOutputArray, contours As IOutputArray, hierarchy As IOutputArray, Поэтому я решил, что смогу предоставить три мата. m определено ранее, было успешно обработано (например, с порогом), поэтому я доволен m. контуры и иерархия с другой стороны могут быть проблематичными. Когда я запускаю код, я получаю необработанное исключение:

Emgu.CV.Util.CvException: OpenCV: (_contours.kind () == _InputArray :: STD_VECTOR_VECTOR || _contours.kind () == _InputArray :: STD_VECTOR_MAT || _contours.kind () == _InputArray :: STD_VECT

Это говорит о том, что я передал неправильные типы в OpenCV, хотя я ожидал, что Emgu справится с этим. Но я понятия не имею. Любая помощь?

1

Решение

На основе Документация и в разделе VB:

«контуры Тип: Emgu.CV.IOutputArray -> Обнаруженные контуры. Каждый контур
хранится как вектор точек

Поэтому вместо отправки одного MAT как твой contours, вы должны отправить контейнер векторов точек.

Посмотреть здесь Эквивалент векторов C ++ для VB.Net.

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector