Кажется, функция Azure не очень хорошо поддерживает Emgu, но, согласно некоторым тестам, я нашел обходной путь, который может помочь вашей проблеме. Пожалуйста, следуйте инструкциям ниже и попробуйте.
1. Go по этой ссылке (может потребоваться зарегистрировать учетную запись и затем войти в систему) , он загрузит образец проекта (который называется «A_Basic_Program_x86»).
2. Создайте новую функцию azure на портале Azure и откройте «kudu», нажав « Расширенные инструменты (Kudu) "
3. Затем на странице куду нажмите" Отладочная консоль "->" CMD "-" сайт " -> "wwwroot", затем создайте новую папку с именем "bin" в каталоге "wwwroot".
4. Откройте пример проекта, который мы скачали выше, мы можем найти некоторые dll-файлы в каталоге A_Basic_Program_x86\My Simple EMGU Program x86\My Simple EMGU Program\My EMGU Program\bin\Debug
. В этом каталоге есть три DLL-файла, которые нам полезны. Это Emgu.CV.dll
, Emgu.CV.UI.dll
и Emgu.Util.dll
.
5. Теперь go в папку "bin", которую мы создаем в каталоге "wwwroot", и перетащите эти три DLL файлы из локального в него. (как показано на скриншоте ниже)
6. Вернитесь к примеру проекта и go в каталог A_Basic_Program_x86\My Simple EMGU Program x86\My Simple EMGU Program\My EMGU Program
. Мы можем найти два dll-файла с именами opencv_core231.dll
и opencv_imgproc231.dll
. Повторите шаг 5 выше, перетащите эти два DLL-файла в папку «bin». Эти два dll-файла также показаны на скриншоте, который я предоставил выше.
7. Создайте функцию триггера http в вашем приложении функций и, пожалуйста, обратитесь к моему коду ниже (обратите внимание на код в красная рамка): Здесь приведен код, аналогичный приведенному выше снимку экрана, который вы можете скопировать.
#r "Newtonsoft.Json"
#r "..\bin\Emgu.CV.dll"
#r "..\bin\Emgu.CV.UI.dll"
#r "..\bin\Emgu.Util.dll"
using System.Net;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Primitives;
using Newtonsoft.Json;
using Emgu.CV;
using Emgu.Util;
using Emgu.CV.Structure;
public static async Task<IActionResult> Run(HttpRequest req, ILogger log)
{
log.LogInformation("C# HTTP trigger function processed a request.");
string name = req.Query["name"];
Image<Bgr, byte> image = new Image<Bgr, byte>(256, 256);
string requestBody = await new StreamReader(req.Body).ReadToEndAsync();
dynamic data = JsonConvert.DeserializeObject(requestBody);
name = name ?? data?.name;
return name != null
? (ActionResult)new OkObjectResult($"Hello, {name}")
: new BadRequestObjectResult("Please pass a name on the query string or in the request body");
}
Теперь мы можем использовать "Image" и "Bgr" в azure Функция без каких-либо сообщений об ошибках.
Надеюсь, это поможет ~