Это определенно хорошая идея - отказаться от записи изображения в файл и затем сразу же вернуться к элементу управления. Это довольно неэффективно, поскольку жесткий диск обычно является самым медленным устройством памяти в системе.
Я не верю, что вы используете правильный конструктор Bitmap
в вашем примере выше. Вероятно, вам следует использовать это определение конструктора. Кроме того, сообщение объекту Bitmap
о том, что PixelFormat
не определен, вероятно, тоже не поможет. Я предполагаю, что у вас есть цветная камера, которая возвращает матрицу CV_8UC3
(т. Е. Ваш PixelFormat == Format24bppRgb
).
Как насчет того, чтобы позвонить вот так:
this->panel1->BackgroundImage = gcnew System::Drawing::Bitmap(frame.size().width,
frame.size().height,
frame.step,
PixelFormat::Format24bppRgb,
(IntPtr)frame.data);
Также помните, что OpenCV изначально сохраняет цвет в формате BGR. Поэтому вам может понадобиться поменять местами красный и синий каналы, чтобы данные выглядели правильно.
Надеюсь, это поможет вам начать!