Отображение канала веб-камеры в формате cv :: Mat в картинке

Я использую OpenCV для прямой трансляции с веб-камеры и после обнаружения лиц. Я изменяю их размеры так, чтобы отображалось только мое лицо.

Но проблема в том, что я делаю все это в C ++ Windows Forms и я хочу, чтобы он отображался в PictureBox вместо того, чтобы получить отображение в OpenCV imshow() окно.

я использую cv::Mat поэтому у меня много проблем с отображением в картинке.

Я пытался преобразовать его в IplImage но это тоже не сработало.
Кроме того, я пробовал Google, но я не мог получить рабочее решение. Я пробовал это в течение 3 дней.

Вот мой код для отображения:

                 face = getFace(frame);
cv::imshow("window",face);

где frame а также face являются cv::Mat

7

Решение

Вот функция C ++ CLR для рисования мата OpenCV в любом элементе управления Windows Form:

void DrawCVImage(System::Windows::Forms::Control^ control, cv::Mat& colorImage)
{
System::Drawing::Graphics^ graphics = control->CreateGraphics();
System::IntPtr ptr(colorImage.ptr());
System::Drawing::Bitmap^ b  = gcnew System::Drawing::Bitmap(colorImage.cols,colorImage.rows,colorImage.step,System::Drawing::Imaging::PixelFormat::Format24bppRgb,ptr);
System::Drawing::RectangleF rect(0,0,control->Width,control->Height);
graphics->DrawImage(b,rect);
delete graphics;
}

Эта функция может рисовать только 8-битные 3-канальные изображения.

Попробуйте поэкспериментировать с пиксельным форматом растрового изображения для других типов изображений.

5

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]