Ищу способ конвертации Bitmap в Mat (OpenCvSharp) (Решено)

Phoenix78

Client
Регистрация
06.11.2018
Сообщения
11 789
Реакции
5 741
Баллы
113
Стоит задача структуру Bitmap/Image прокинуть в Mat (OpenCvSharp) без сохранения на жесткий диск.
Сейчас делаю так
C#:
Развернуть Свернуть Копировать
HtmlElement screen = instance.ActiveTab.FindElementByXPath("//xpath", 0);
screen.DrawPartAsBitmap(left, top, Width, Height, false).Save(path);
Mat screen_Mat = new Mat(path, ImreadModes.Grayscale);

Так то работает, хотелось бы без сохранения на диск, все в памяти сделать.

из dll подключен OpenCvSharp только. может я просто не все подключил и поэтому у меня нет нужных функций.... может кто сталкивался уже с таким ?


Решение тут
 
Последнее редактирование:
  • Оценить
Реакции: djaga
может кто сталкивался уже с таким ?
Я особо не знаток, поэтому наверно на какие-то доп. вопросы не отвечу :D.
Я через вот этот метод прокидывал Image до Mat, но перед этим Bitmap до Image.

94517
 
Я особо не знаток, поэтому наверно на какие-то доп. вопросы не отвечу :D.
Я через вот этот метод прокидывал Image до Mat, но перед этим Bitmap до Image.
Не проблема в Image закинуть. Покажешь код BlobFromImage ?
 
Не проблема в Image закинуть. Покажешь код BlobFromImage ?
Bitmap в Image я вот так кидал
C#:
Развернуть Свернуть Копировать
 Image<Bgr, byte> img = bmp.ToImage<Bgr, byte>().Resize(320, 320, Inter.Cubic);
А Image в Mat вот так
C#:
Развернуть Свернуть Копировать
Mat input = DnnInvoke.BlobFromImage(img, 1 / 255.0, swapRB: true);
 
  • Оценить
Реакции: Phoenix78
Bitmap в Image я вот так кидал
C#:
Развернуть Свернуть Копировать
 Image<Bgr, byte> img = bmp.ToImage<Bgr, byte>().Resize(320, 320, Inter.Cubic);
А Image в Mat вот так
C#:
Развернуть Свернуть Копировать
Mat input = DnnInvoke.BlobFromImage(img, 1 / 255.0, swapRB: true);
у меня же нет твоего класса DnnInvoke.... как бы исходный код нужен... хотя бы BlobFromImage ;-)
 
поверь у меня его тоже нет, это класс библиотеки которая светилась на первом скрине
ага.. вроде допер.. у меня нет нужного функционала. надо Dnn подрубить. Вот в инете пример нашел, щас буду рыть.
94520
 
Нашел решение.
нужна дополнительная dll OpenCvSharp.Extensions

94564

C#:
Развернуть Свернуть Копировать
using OpenCvSharp;
using OpenCvSharp.Extensions;   

HtmlElement screen = instance.ActiveTab.FindElementByXPath("//xpath", 0);
Mat screen_Mat = BitmapConverter.ToMat(screen.DrawPartAsBitmap(left, top, Width, Height, false));
 
  • Оценить
Реакции: djaga и p-sergei
Нашел решение.
нужна дополнительная dll OpenCvSharp.Extensions

Посмотреть вложение 94564

C#:
Развернуть Свернуть Копировать
using OpenCvSharp;
using OpenCvSharp.Extensions;  

HtmlElement screen = instance.ActiveTab.FindElementByXPath("//xpath", 0);
Mat screen_Mat = BitmapConverter.ToMat(screen.DrawPartAsBitmap(left, top, Width, Height, false));
А для чего все это?
 

Кто просматривает тему: (Всего: 0, Пользователи: 0, Гости: 0)