Не удалось загрузить cvextern в проекте С#

Я пытаюсь отладить мою программу, используя emgu и HaarCascade в С#. я получаю исключение вроде:

Невозможно загрузить DLL 'cvextern': указанный модуль не найден. (Исключение из HRESULT: 0x8007007E)

Я добавил файл cvextern.dll в свой проект и попробовал как опции "копировать всегда", так и "копировать, если новые" в свойствах файла. Кроме того, сборка находится на платформе x64.

вот отчасти то, что я написал:

    private void Load_Click(object sender, EventArgs e)
    {
        OpenFileDialog dlg = new OpenFileDialog();
        dlg.Filter = "Photo Files (*.jpg)|*.JPG";
        dlg.CheckFileExists = true;
        if (dlg.ShowDialog() == DialogResult.OK)
        {
            Image<Bgr, Byte> My_Image = new Image<Bgr, byte>(dlg.FileName);
            HaarCascade face = new HaarCascade("haarcascade_frontalface_alt.xml");

и исключение находится в последней строке.

Ответы

Ответ 1

Ошибка, получаемая вами не только для cvextern, эта dll фактически указывает на почти все другие opencv-библиотеки, и все это требуется. С этой ошибкой вам потребуется следующая DLL в вашем проекте.

Обратите внимание, что "220" - это номер версии, который изменится в соответствии с обновлениями.

  • cudart64_32_16.dll
  • cufft64_32_16.dll
  • cvextern.dll
  • npp64_32_16.dll
  • opencv_calib3d220.dll
  • opencv_contrib220.dll
  • opencv_core220.dll
  • opencv_features2d220.dll
  • opencv_flann220.dll
  • opencv_gpu220.dll
  • opencv_highgui220.dll
  • opencv_imgproc220.dll
  • opencv_legacy220.dll
  • opencv_ml220.dll
  • opencv_objdetect220.dll
  • opencv_video220.dll

Эта ошибка покрывается вместе с другими в моей статье о codeproject здесь.

Любые другие проблемы дайте мне знать,

Приветствия,

Крис

Ответ 2

Эта ошибка появилась на моей стороне с помощью Emgu CV 3.1, и я нашел для этой проблемы следующее рабочее решение:

скопируйте cvextern.dll в каталог приложения \bin\Debug\

Надеюсь, что это поможет.

Ответ 3

для версии 2.3 его список увеличивается с помощью opencv_ffmpeg.dll и opencv_flann231.dll.

Ответ 4

cvextern.dll должен быть в Windows\System32 для x86 и Windows\SysWOW64 для x64 это работает для меня. ps: я использовал пакет NuGet 'EmguCV' v3.1.0.1 с VS2015

Ответ 5

Моя проблема для этой ошибки заключалась в том, что VS2015 запускал веб-проект в 32-битном IIS Express. Исправление состояло в том, чтобы обеспечить использование 64-битного IIS Express

Я добавил этот код при запуске, чтобы напомнить себе при настройке новой машины

if (IntPtr.Size != 8)
{
     throw new Exception("Change VS options to ensure 64bit IIS Express");
}

Ответ 6

в моем случае я переключился на 64 цели и не заметил, переход на x86 заставил это уйти