Это для всех, кто не знаком с matrox framegrabber. Первое, что вам нужно сделать, это добавить ссылку matrox dll в качестве ссылки. Имейте в виду, что в настоящее время существуют две версии matrox: Matrox 9 и Matrox 10. В зависимости от версии matrox, установленной в пользовательской системе, dll следует добавить. .. (Это можно проверить, посмотрев на «MIL_PATH» в системных каталогах Затем объявить некоторые переменные, которые будут использоваться в Matrox захватывая
Некоторые из шахты ниже:
public static MIL_ID MilApplication = MIL.M_NULL; // Application identifier.
public static MIL_ID MilSystem = MIL.M_NULL; // System identifier.
public static MIL_ID MilDisplay = MIL.M_NULL; // Display identifier.
public static MIL_ID MilDigitizer = MIL.M_NULL; // Digitizer identifier.
public static MIL_ID MilImage = MIL.M_NULL; // Image identifier.
public static MIL_ID MilRecord = MIL.M_NULL; // 8 bit Pointer only for Video Recording.
public MIL_INT MilINT = MIL.M_NULL;
public MIL_INT NbPixelsPtr = MIL.M_NULL;
MIL_ID MilImageDisp = MIL.M_NULL;
MIL_ID[] MilGrabBufferList = new MIL_ID[BUFFERING_SIZE_MAX];
Затем выполните следующее код
string MilSystemDet = "";
MilSystemDet = Environment.GetEnvironmentVariable("Mil_Path");
if (MilSystemDet != null)
{
string dcfFilePath = "";
FileDialog OpenFile = new OpenFileDialog();
OpenFile.Filter = "File Formats(*.dcf)|*.DCF;";
if (OpenFile.ShowDialog() == DialogResult.OK)
{ dcfFilePath = OpenFile.FileName;
MIL.MdigAlloc(MilSystem, MIL.M_DEFAULT, dcfFilePath, MIL.M_DEFAULT, ref MilDigitizer);
MIL.MbufAlloc2d(MilSystem,
MIL.MdigInquire(MilDigitizer, MIL.M_SIZE_X, MIL.M_NULL),
MIL.MdigInquire(MilDigitizer, MIL.M_SIZE_Y, MIL.M_NULL),
8 + MIL.M_UNSIGNED,
MIL.M_IMAGE + MIL.M_DISP + MIL.M_GRAB,
ref MilImage);
MIL.MdispAlloc(MilSystem, MIL.M_DEFAULT, ("M_DEFAULT"), MIL.M_DEFAULT, ref MilDisplay);
MIL.MdigHalt(MilDigitizer);
Если вы хотите, чтобы начать захват, выполните следующие действия
MIL.MbufClear(MilImage, 0);
MIL.MdigGrabContinuous(MilDigitizer, MilImage);
MIL.MdispControl(MilDisplay, MIL.M_VIEW_MODE, MIL.M_AUTO_SCALE);
MIL.MdispControl(MilDisplay, MIL.M_SCALE_DISPLAY, MIL.M_ENABLE);
Чтобы скопировать текущее изображение в буфер, использовать
MIL.MbufGet(MilImage, myBuffer);
, где myBuffer представляет собой USHORT буфер с размером, равным общему числу пикселей в изображении.
Чтобы сохранить текущее изображение в файл, используйте
MIL.MbufSave(address,MilImage);
Если вы не имеете .dcf файл, который вы можете получить по умолчанию один из установки Matrox кд бесплатно. Или просто установите программу просмотра matrox, а в программных файлах вы можете ее использовать. Параметры изображения, такие как ширина, высота и глубина бит, получены из файла dcf. Но если вы хотите, вы можете выделить их в функции Mbufalloc2d выше.
Я постараюсь периодически проверять этот ответ. Если у меня есть вопросы, спросите меня. Я постараюсь ответить им, насколько мне известно.