Если кто-то использует оболочку Emgu openCv в .net 3.5 framework, скажите, пожалуйста, почему это исключение появляется, его внутреннее исключение не может загрузить cxcore.dll.Инициализатор типа для 'Emgu.CV.CvInvoke' выбрал исключение
ответ
Я предлагаю вам turn on Fusion logging и посмотреть, где находится , попробуйте, чтобы загрузить cxcore.dll, и убедитесь, что у вас есть это в нужном месте.
У вас нет нужной версии openCV, или у вас вообще нет установленной библиотеки openCV. В последней версии Emgu используется cxcore110.dll, в предыдущей версии используется cxcore100.dll. Они должны либо находиться в каталоге вашего приложения, либо в пути (вероятно,% system32%). У меня была эта проблема, когда я пытался запустить Emgu.
У меня такая же проблема. Я настраивал журнал Fusion, и это не помогло мне. Я запускаю сборку в том же каталоге, что и cxcore110.dll, поэтому я в тупике.
Далее я загрузил/скопировал все DLL OpenCV в каталог на моем пути, такую же проблему.
Нашли решение после использования ходунки зависимостей. Он работал над любой системой VS2005 & VS2008. Если у вас только VS2008, вам понадобится пакет распространяемого пакета Microsoft Visual C++ 2005 SP1 (x86) s] 1.
Для Emgu CV версии < = 2.1, это означает, следующие: cvXXX.dll библиотеки DLL, cvauxXXX.dll, cxcoreXXX.dll, highguiXXX.dll, opencv_ffmpegXXX.dll, mlXXX.dll и cvextern.dll, где ХХХ-OpenCV номер версии.
Для Emgu CV версии> = 2.2 это означает, что следующие библиотеки DLL: opencv_calib3dXXX.dll, opencv_contribXXX.dll, opencv_coreXXX.dll, opencv_features2dXXX.dll, opencv_highguiXXX.dll, opencv_imgprocXXX.dll, opencv_legacyXXX.dll, opencv_mlXXX.dll, opencv_objectdetectXXX .dll, opencv_videoXXX.dll, где XXX - номер версии OpenCV.
копию этих файлов и вставить их в C: \ WINDOWS \ system32
он работает со мной
После попытки все комбинации opencv_xxx Возможное, что он работал для меня было в том числе библиотеки npp32_42_9.dll. Надеюсь, поможет.
Эта ошибка произошла со мной. Я добавил cxcore210.dll (для версии emgucv 2.1), которая изначально находится внутри папки bin.
Тогда это вызвало новую ошибку о том, что я должен также включать в себя highgui210.dll (также для emgucv версии 2.1) ...
Тогда проблема была решена :)
Я надеюсь, что это работает для вас тоже ...
Этот учебник, кажется, описывающее вашу проблему и исправить http://fewtutorials.bravesites.com/entries/emgu-cv-c/-emgu-cv-invoke-threw-an-exception-solution
Вот как я мог бы решить эту проблему: Скопируйте адрес папки x86 (или x64 на 64-разрядной ОС) в папке «bin», где установлен ваш Emgu. Моя: C: \ Emgu \ emgucv-windows-universal-gpu 2.4.9.1847 \ bin \ x86
Затем вставьте этот адрес здесь: Панель управления> Система> Расширенные настройки системы> Переменные среды> в системных переменных нажмите «Путь» и нажмите «Редактирование»> добавить точку с запятой в конец строки там и вставьте адрес, который вы только что скопировали, в буфер обмена после этой точки с запятой> нажмите OK.
У меня было это время и время ошибки. Я использовал EmguCV 2.4.9 и .Net framework 4.5. Я проверил множество учебников, но не нашел ответа. В конце, когда я положил файлы opencv как из версий 220, так и из 249, он сработал!
Скопируйте и вставьте все неуправляемые библиотеки DLL в папку bin вашей установки EMGU, где находится ваш exe-файл (отпустите или отлаживайте папку вашего проекта).
В моем случае, неуправляемые библиотеки являются в "C: \ Emgu \ emgucv-окон-универсальный-2.9.0.1922 CUDA \ Bin \ x86"
Я установил EmguCV 2,9 недавно. 64-разрядное приложение работает нормально. Это исключение появилось, когда я попытался использовать 32-битную платформу (x86).
Я понял, что, следуя учебному пособию по установке Emgu, я установил «Путь» в переменных системной среды в папку. \ X64. Для моего случая это C: \ Emgu \ emgucv-windows-universal-cuda 2.9.0.1922 \ bin \
Чтобы сделать работу 32-разрядного приложения, я изменил переменную «Путь» на. \ X86 папку, перезапустил компьютер. Откат назад - 64-битное решение больше не будет работать.
Идеальное решение для копирования всех DLL-файлов с. \ X86 или. \ X64 туда, где находится исполняемый файл. Для моего случая, потому что я использую LabVIEW + .NET DLL, LabVIEW получает копию DLL в свою папку с кешем, поэтому временное решение для легкой разработки - это изменить переменную «Путь». Когда я буду распространять финальный исполняемый файл, я скопирую соответствующие файлы DLL.
В моем случае, добавив эти файлы в Bin \ релизе решить эту проблему: npp32_42_9.dll и cudart32_42_9.dll
Это заняло у меня около 2 часов, чтобы заключить это :)
Я установил OpenCv2.3.1 до и вчера, я установил последнюю версию EmguCV3.0 (также попробовал 2.9), но он дал эту ошибку.
все решения, которые я пробовал, не работают, чем я установил EmguCV 2.3 и его решение. Я думаю, что версия EmguCV и opencv важна для решения.
Перепробовав много вещей, если ваши файлы .dll все правильно размещены и только версию проблема выходит попробовать следующие простые шаги:
- Открытых свойства созданного проекта
- Перейти к созданию раздела
- Изменить цель платформы на «Любой процессор»
Сохранить и перестроить проект.
Если вы уже установили dll и по-прежнему получаете исключение, попробуйте сделать следующее: Перейдите в «Свойства проекта» -> «Приложение» -> «Целевая структура» и измените его на NET. Рамки 4 и нажмите «Да». Запустите снова свое приложение, и оно должно работать нормально.
Pff: |. После часа потратить на эту проблему, это решение отлично работало для emgucv 3.1 – caffeine
Мне потребовалось некоторое время, чтобы выяснить, почему это происходит в моем случае, поскольку ни одно из вышеперечисленных решений не решило проблему. Оказалось, что у меня установлен Windows 10 Pro N
, который не имеет средств массовой информации. После установки Media Feature Pack
он работал.
дешевое и грязное решение, но это сработало для меня! – gonzobrains
почему я не пробовал это 2 дня назад ??? – Zafar
Это тоже сработало для меня –