'Emgu.CV.CvInvoke' үшін типті инициализатор ерекшелік жасады

Мен бұл қатені аламын

'Emgu.CV.CvInvoke' типі инициализаторы ерекше жағдайды шығарған.

Emgu CV-ді қолдануға тырысқанда. Мен бұны түзету үшін ойлайтын барлық нәрселерді көрдім, бірақ сол қатені береді және мен батырмасын басқан кезде ол көрсетіледі

Нысан сілтемесі нысанның данасына орнатылмаған.

Мен тырысып жатқан код:

void ProcessFunction(object sender, EventArgs e)
{
    imgOrg = capturecam.QueryFrame();
    if (imgOrg == null) return;
    imgProc = imgOrg.InRange(new Bgr(50, 50, 50), new Bgr(255, 255, 255));
    imgProc = imgProc.SmoothGaussian(9);
    imageBox1.Image = imgOrg;
    imageBox2.Image = imgProc;
}

Мен не істегенімді дұрыс деп айта аламын және оны бұдан қалай аластауға болады? Рахмет!

13
Мен бұл ескі мәселе екенін білемін, бірақ егер сіздің операциялық жүйеңіз 64 бит болса, EmguCV x64 dlls, ал егер операциялық жүйе 32 бит болса, онда EmguCV x86 dlls. Сіздің шешіміңізді қалай құрастырғаныңыз маңызды емес, «Кез келген CPU» ретінде оңай құрылуы мүмкін.
қосылды автор Edgar, көзі

9 жауаптар

Менде бірдей мәселе болды. Менің ішкі ерекшелігім «opencv_core290 DLL жүктеу мүмкін емес» болды.

X86 және x64 қалталарын «yourEmguFolder/bin» ішінен жобаңыздың шығыс (bin) каталогына көшіру керек. Содан кейін қайтадан жобаны құрып, іске қосыңыз.

According to emgu wiki

14
қосылды
Бұл бірнеше сағаттық сынақтан кейін маған жұмыс істеген жалғыз әдіс. Мұхаммед рахмет
қосылды автор Phoenician, көзі
Бұл шешім қашықтағы сервермен жұмыс істейді.
қосылды автор Somnath Kadam, көзі

Мүмкін, басқарылмайтын DLL тәуелділіктерін жүктеу мүмкін емес. Бірнеше ұсыныс:

  1. .NET жобасы AnyCPU емес, x86-ке бағытталуы керек, себебі сізде OpenCV-тің x86-ны құруға болады.
  2. OpenCV dlls сіздің PATH (немесе Console/WinForms/WPF қолданбасы болса, тікелей қалта каталогында) екеніне көз жеткізіңіз.
9
қосылды
Ерекшелік тастаған кезде түзеткіште бұзуға болады ма? Мұнда ерекше жағдай туралы көбірек ақпарат ала аласыз.
қосылды автор jlew, көзі
Visual Studio бағдарламасында: Debug | Ерекшеліктер ... | Ортақ тілдің жұмыс істеу ерекшеліктері | [Тексерілген] Қалдырыңыз
қосылды автор jlew, көзі
немесе оның платформасында x86 .. және opencv dll файлдарын қалта директориясының отладки қалтасына енгізгенмен, бірақ ол сол қатені береді
қосылды автор Dilshan Zuhdi, көзі
Мен бұл туралы жаңа жаңалықты түзетемін
қосылды автор Dilshan Zuhdi, көзі

Барлық басқарылмаған DLL файлдарын EMGU файлыңыздың қапшығына қотарып, қойыңыз (exe файлыңыз сіздің жоба қалтаңыздың босатылуы немесе қотару қалтасын).
Менің жағдайда, басқарылмайтын файлдар «C: \ Emgu \ emgucv-windows-universal-cuda 2.9.0.1922 \ bin \ x86»

5
қосылды
Менің жағдайда, мен таза құрастыруды жасадым және ол қапшықтағы қалтаны тазалады. Қалпына келтірілген файлдарды қайта орнату. Әдепкі бойынша, онда ол жерде бар: concrt140.dll cvextern.dll msvcp140.dll opencv_ffmpeg330_64.dll vcruntime140.dll
қосылды автор Brian, көзі

you should add dependency dll into project and change 'copy to output directory' property to 'copy always' (add -> existing item) from Emgu\emgucv-windows-universal-cuda 2.9.0.1922\bin\x86

менің жобаға қосыңыз: opencv_core290.dll, opencv_highgui290.dll, opencv_ffmpeg290.dll, opencv_imageproc290.dll және cudart32_55.dll

2
қосылды

Алдымен жобаңызға үш кітапхана қосыңыз. opencv_core290.dll, opencv_highgui290.dll, opencv_imgproc290.dll. Мұнда 290 сіздің opencv нұсқаңызды білдіреді. Осыдан кейін «Көшірмеу» дегенді мүлде «әрдайым көшіруге» өзгерту. сіздің жобаңызды үнемдеуге қарағанда. Содан кейін келесі орынға барыңыз. Егер сіздің компьютеріңіз «C: \ Emgu \ emgucv-windows-universal-cuda 2.9.0.1922 \ bin \ x64» қалтасына өтпесеңіз немесе 32 биттік «C: \ Emgu \ emgucv- windows-universal-cuda 2.9.0.1922 \ bin \ x86 «және осы қалтадағы барлық файлдарды көшіруге және сіздің Project/bin/debug/папкаңызға қотаруға мүмкіндік береді. Сіздің жобаңызды қайта құрудан гөрі. Бұл жақсы жұмыс істейтін болады.

Үздік сәттілік !!!!

2
қосылды

Мен 32 бит машинада 3 күн бойы бірдей проблема болған еді. Мен мұны барлық файлдарды көшіріп, жүйе32 қалтасына қапшықтан және x86 қалталарынан көшіріп, жұмыс істедім. Басқа DLL-лерге тәуелді DLL-лер бар және барлық жұмыс істейтін сәтте көрінеді. Мен қайсысын білетін уақыт жоқ еді.

1
қосылды

Бұл туралы C#, VS 2017, emgu нұсқасы 3.2.0.2682

AnyCPU-да қарапайым құрастырды және нашар форматты алып тастады. Осылайша, ескертулердегі ықтимал ұсыныстардың себебінен x86 жаман пішімін алып тастағанын көрдім. Ақырында оны x64 деп қойдым және ол жақсы жұмыс істеді.

1
қосылды

Мен үшін Visual Studio бағдарламасында басу арқылы мәселе шешілді:

Menu -> Project -> Properties -> Build -> Prefer 32-bit.

Бұл проблема emgu (мүмкін, x86) және менің OS x64) болуы тиіс.

0
қосылды

оны шешу үшін LD_LIBRARY_PATH пайдалана аласыз:

  1. open the warning and check what lib your program lack

  2. locate the path

    $ locate # to find the library path

  3. In your IDE, set the environment variable LD_LIBRARY_PATH to the lib path,(I use monodevelop, the path is Run-->Run With-->Custom Parameters...)

бұл жақсы жұмыс істеп жатыр :)

0
қосылды