Я создал пример DLL-библиотеки EdgeBoxes.cpp для LabVIEW с использованием OpenCV.Я пытаюсь открыть файл модели в DLL, но все, что я получаю, это ошибка подтверждения.Я также создал ВП для морфологии, обнаружения углов, грубого преобразования, но никогда не получал подобных сообщений об ошибках.
Я пытался:
- Каждая комбинация путей с использованием прямой или обратной косой черты.
- Помещение каждого файла в одну и ту же папку (также в
C:\
).(LabVIEW VI, DLL, ModelFile) - Чтобы открыть его в LabVIEW сначала с помощью "
Open/Create/Replace.vi
" - Чтобы открыть извлеченный файл model.yml вместо model.yml.gz
- Преобразование yml-файла в json, txt также не работает
В этот момент я ничего не понимаю:
string filename = "C:\model.yml.gz"
Ptr<StructuredEdgeDetection> pDollar; = createStructuredEdgeDetection(filename);
Сообщение об ошибке, которое я получаю:
Ошибка -1002 произошла в OpenCV (4.0.1-dev) C: \ OpenCV \ opencv_contrib-master \ modules \ ximgproc \ src \ structured_edge_detection.cpp: 432: ошибка: (-215: утверждениеошибка) modelFile.isOpened () в функции 'cv :: ximgproc :: StructuredEdgeDetectionImpl :: StructuredEdgeDetectionImpl'
Я не знаю, как открыть этот файл без получения этого сообщения об ошибке.Возможно ли получить доступ к файлу в вызове DLL.Нужно ли как-то открывать его в LabVIEW VI из-за проблем с разрешениями?Спасибо!
Обновление: 1
Теперь я попытался прочитать файл с помощью ifstream, и кажется, что я могу получить доступ к файлу без каких-либо проблем (код ниже).Таким образом, причина, по которой это не работает, похоже, связана с OpenCV?
std::ifstream is(filename, std::ifstream::binary);
is.seekg(0, is.end);
int length = is.tellg();
is.seekg(0, is.beg);
char * buffer = new char[length];
is.read(buffer, length);
is.close();
delete[] buffer; // buffer contains the entire file
Обновление: 2
Теперь я попытался открыть файл как OpenCVделает после вызова:
createStructuredEdgeDetection(filename);
После этого OpenCV пытается открыть файл с помощью: См. строку 431 https://github.com/opencv/opencv_contrib/blob/master/modules/ximgproc/src/structured_edge_detection.cpp
cv::FileStorage modelFile(filename, FileStorage::READ);
if (modelFile.isOpened())
{ return -1; }
Почему он работает с
ifstream::binary
Должен ли я перекомпилировать файл "structd_edge_detection.cpp"?