Может ли MdigGrab в библиотеке изображений Matrox давать цветное изображение или ч / б - PullRequest
0 голосов
/ 01 марта 2019

Я использую Matrox Morphis QxT с 16-канальным захватом кадров.При использовании встроенных функций MdigGrab и MdigGrab непрерывный, я получаю черно-белое изображение с моей камеры (Watec 221S2).

Я хочу цветные изображения с камеры.

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

Вот мой код.

#include "opencv\cv.h"
#include "opencv\cxcore.h"
#include "opencv\highgui.h"
#include <mil.h>


char filename[50];
using namespace cv;
int frame=0;

int main(int argc, char **argv)
{
    Mat frame1;

    MIL_ID  MilApplication,       /* Application identifier.  */
    MilSystem,                    /* System identifier.       */
    MilGrabImages,
    MilDigitizer;                 /* Image Digitizer        */


    MIL_INT         ImageSizeBand,  ColorMode, InputMode, ScanMode;
    MIL_DOUBLE      FrameRate;
    MIL_INT64   ImageWidth, ImageHeight;
    /* Allocate default value to application, system and digitizer */
    MappAllocDefault(M_DEFAULT, &MilApplication, &MilSystem, M_NULL, &MilDigitizer, M_NULL);

    /* Set camera parameters like resolution and frame rate here */

    MdigControl(MilDigitizer, M_GRAB_MODE, M_ASYNCHRONOUS);

    /* Inquire parameters from frame grabber */
    MdigInquire( MilDigitizer, M_SIZE_X, &ImageWidth );
    MdigInquire( MilDigitizer, M_SIZE_Y, &ImageHeight );
    MdigInquire( MilDigitizer, M_SIZE_BAND, &ImageSizeBand);
    MdigInquire( MilDigitizer, M_INPUT_MODE, &InputMode);
    MdigInquire( MilDigitizer, M_COLOR_MODE, &ColorMode);
    MdigInquire( MilDigitizer, M_SCAN_MODE, &ScanMode);
    MdigInquire( MilDigitizer, M_SELECTED_FRAME_RATE, &FrameRate);

    printf("\nResolution %d x %d, %d band(s). ", ImageWidth, ImageHeight, ImageSizeBand);

    switch(ColorMode)
    {
        case M_DVI: MosPrintf(MIL_TEXT("DVI "));break;
        case M_SDI: MosPrintf(MIL_TEXT("SDI "));break;
        case M_COMPOSITE: MosPrintf(MIL_TEXT("Composite "));break;
        case M_RGB: MosPrintf(MIL_TEXT("RGB "));break;
        case M_EXTERNAL_CHROMINANCE: MosPrintf(MIL_TEXT("Y\\C "));break;
        case M_MONOCHROME: MosPrintf(MIL_TEXT("Monochrome "));break;
        default: MosPrintf(MIL_TEXT(" "));
    }
    switch(InputMode)
    {
        case M_ANALOG: MosPrintf(MIL_TEXT("analog "));break;
        case M_DIGITAL: MosPrintf(MIL_TEXT("digital "));break;
        default: MosPrintf(MIL_TEXT(" "));
    }
    switch(ScanMode)
    {
        case M_PROGRESSIVE: MosPrintf(MIL_TEXT("progressive "));break;
        case M_INTERLACE: MosPrintf(MIL_TEXT("interlaced "));break;
        default: MosPrintf(MIL_TEXT(" "));
    }

    MosPrintf(MIL_TEXT("@ %0.2f fps.\n\n"), FrameRate);

    /* Allocate grab images. */
    MbufAllocColor(MilSystem,
                    ImageSizeBand,
                    ImageWidth,
                    ImageHeight,
                    8+M_UNSIGNED,
                    M_IMAGE+M_GRAB+M_PROC,
                    &MilGrabImages);


    frame1.create(ImageHeight, ImageWidth, CV_8UC3);

    while(1)
    {
     MdigGrab(MilDigitizer, MilGrabImages);
     MbufGetColor2d( MilGrabImages, M_PACKED+M_BGR24, M_ALL_BANDS, 0,0, 768, 576, (void*)(frame1.data) );

     imshow("Channel 0", frame1);
     cvWaitKey(50);
    }

    return 0;
}

1 Ответ

0 голосов
/ 01 марта 2019

Я получил ответ после просмотра справочного центра mil.

Да, MdigGrab выдает цветные изображения.Мне просто нужно было изменить DCF на M_PAL (680x480) или M_NTSC (786x576) с M_CCIR.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...