OpenCVSharp: невозможно инициализировать OpenCvSharp.CPlusPlus.Mat или использовать что-либо из .CPlusPlus.

Я установил последнюю версию OpenCVSharp 2 (2.4.10.201...) с менеджером NuGet в своем проекте. Все, что касается OpenCVSharp.CvMat, работает нормально (загрузка, манипуляции и т. д.), поэтому я уверен, что установка выполнена правильно.

Однако я вообще не могу использовать OpenCVSharp.CPlusPlus! Я пытаюсь просто создать мат, но безрезультатно:

using OpenCvSharp;
using OpenCvSharp.CPlusPlus;
using MyCVSharp;
using System.Diagnostics;
using System.Collections;

class MainClass
{
    static void Main()
    {
        Mat test3 = new Mat( new Size( 100, 100 ), MatType.CV_8UC1 ); // ERROR
        Mat test2 = new Mat( "f1.png", LoadMode.Color ); // ERROR

        CvMat test = new CvMat( "f1.png", LoadMode.Color ); //; THIS WORKS

Ошибка:

Произошло необработанное исключение типа «System.TypeInitializationException» в MyCVSharpTEST.exe.

Дополнительная информация: Инициализатор типа для OpenCvSharp.CPlusPlus.Mat вызвал исключение.

Вместе с моим проектом развернуто множество DLL. OpenCvSharp.CPlusPlus.dll и OpenCvSharp.dll развернуты в одной папке рядом с MyCVSharpTEST.exe, а папка dll создается с подпапками x86 и x64, содержащими еще 22 связанные dll, каждая.

Я даже пытался создать мат из уже созданного CvMat, но все равно та же ошибка.

Редактировать: Ошибка, показанная в блоке try-catch:

System.TypeInitializationException: The type initializer for 'OpenCvSharp.CPlusPlus.Mat' threw an exception. ---> System.DllNotFoundException: Unable to load DLL 'OpenCvSharpExtern': The specified module could not be found. (Exception from HRESULT: 0x8007007E)
   at OpenCvSharp.CPlusPlus.NativeMethods.core_Mat_sizeof()
   at OpenCvSharp.CPlusPlus.Mat..cctor()
   --- End of inner exception stack trace ---
   at OpenCvSharp.CPlusPlus.Mat..ctor()
   at MainClass.Main() in C:\Users\kotsias\Documents\Visual Studio 2015\Projects\MyCVSharp\ConsoleApplication1\Test.cs:line 14

Поскольку проблема теперь кажется связанной с dll, я решил написать совершенно новый вопрос об этом .


person Bill Kotsias    schedule 19.05.2017    source источник
comment
Можете ли вы показать нам внутреннее исключение?   -  person Leonid Vasilev    schedule 19.05.2017
comment
@LeonidVasilyev Извините, как я могу показать это с помощью Visual Studio 2015?   -  person Bill Kotsias    schedule 19.05.2017
comment
Есть несколько способов сделать это. Вы можете обернуть new Mat() блоком try-catch, затем запустить приложение с подключенным отладчиком и вручную проверить свойство Exception.InnerException. Проверьте Что такое внутреннее исключение? обсуждение, try-catch Справочник по C# и Управление исключениями с помощью отладчика на странице MSDN.   -  person Leonid Vasilev    schedule 20.05.2017