NSMutableArray NSNumber равен нулю после добавления разобранного float - PullRequest
0 голосов
/ 31 января 2019

Я пытаюсь проанализировать массив Векторов (из st ++ :: vector в C ++) в NSMutableArray из NSNumber.Тем не менее, вектор, который я добавляю в массив NSNumber, всегда равен nil, даже после добавления NSNumber (проанализированный из std :: vector)

В этом проекте я пытаюсь подключить алгоритм OpenCV Canny Edge Detection(C ++) в мой проект Swift.Один из их методов возвращает все края фотографии как std :: vector.Итак, я пытаюсь разобрать это в массив, который совместим со Swift (используя Objective-C ++ в качестве языка-посредника).На данный момент кажется, что только одна строка работает неправильно (как указано выше).Я также начинающий программист Objective-C ++, поэтому в коде могут быть некоторые распространенные ошибки, которых я не обнаружил.

/*Ptr<LineSegmentDetector>*/
cv::Ptr<cv::LineSegmentDetector> ls = cv::createLineSegmentDetector(cv::LSD_REFINE_STD) ;//Creates the line detector (AKA what I called the edge detector)

std::vector<cv::Vec4f> lines_std;

[image convertToMat: &mat];

// Detect the lines
ls->detect(mat, lines_std);

//Swift compatible NSMutableArray to return from this method
NSMutableArray *edgeLines;

printf("currently finding the edge lines");

for (int i = 0; i < lines_std.size(); i ++) {
    NSMutableArray<NSNumber *> *vector;

    //Convert from Vec4f to NSNumber
    for (int k = 0; k < 4; k ++) {
        [vector addObject: [NSNumber numberWithFloat: (lines_std[i][k])]]; //HERE, I'm parsing each float value in each vector (from std::vector<cv::Vec4f>) and adding it to a NSArray, like a vector
    }

    //Here, I add the vectors to the return NSMutable array
    [edgeLines insertObject:vector atIndex:edgeLines.count];
}

return edgeLines;

Как указано выше, переменная "vector" всегда равна nil,хотя я добавляю к нему объект NSNumber.

1 Ответ

0 голосов
/ 06 февраля 2019

Я нашел проблему, я не использовал эту строку: NSMutableArray * vector = [[NSMutableArray alloc] init];

...