⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dialogs.cpp

📁 Program use openCV to demo edge detection (algorithm Gradient).
💻 CPP
📖 第 1 页 / 共 2 页
字号:
//    snprintf( title, 100, "%d", camera);
    
    cvvInitSystem(0, 0);
    /* Creating main dialog window */
    vf->dialog = XtVaAppCreateShell( title, "video", topLevelShellWidgetClass,
                                XtDisplay( /*(void*)*/cvvTopLevelWidget ),
                                XtNminWidth, 10, XtNminHeight, 10,
                                XtNinput, 1, 0 );
    /* Creating main paned window... It will parent for all smaller elements */
    vf->paned = XtVaCreateManagedWidget( "CvVisual_paned", panedWidgetClass, vf->dialog,
                                     0 );
    /* Resolution elements */
    vf->label_res = XtVaCreateManagedWidget( "resolution", labelWidgetClass, vf->paned,
                                     XtNshowGrip, False,
                                     XtNlabel, "camera resolution",
                                     XtNjustify, XtJustifyCenter, 0 );

    vf->paned_res = XtVaCreateManagedWidget( "resolution_res", panedWidgetClass, vf->paned,
                                         XtNshowGrip, False,
                                         XtNorientation, XtorientHorizontal,
                                         0 );
    
    sprintf( title, "%dx%d", vf->descr.minwidth, vf->descr.minheight );
    vf->res_min = XtVaCreateManagedWidget( "res min", toggleWidgetClass, vf->paned_res,
                                       XtNlabel, title,
                                       XtNshowGrip, False,
                                       XtNradioData, &select_res,
                                       0 );
    XtAddCallback( vf->res_min, "callback", (XtCallbackProc)on_min, vf );
    vf->min_w = vf->descr.minwidth;
    vf->min_h = vf->descr.minheight;

    vf->res_middle = XtVaCreateManagedWidget( "res middle", toggleWidgetClass, vf->paned_res,
                                       XtNlabel, "320x240",
                                       XtNshowGrip, False,
                                       XtNradioData, &select_res,
                                       XtNradioGroup, vf->res_min,
                                       0 );
    XtAddCallback( vf->res_middle, "callback", (XtCallbackProc)on_mid, vf );
    vf->mid_w = 320;
    vf->mid_h = 240;

    sprintf( title, "%dx%d", vf->descr.maxwidth, vf->descr.maxheight );
    vf->res_max = XtVaCreateManagedWidget( "res max", toggleWidgetClass, vf->paned_res,
                                       XtNlabel, title,
                                       XtNshowGrip, False,
                                       XtNradioData, &select_res,
                                       XtNradioGroup, vf->res_min,
                                       0 );
    XtAddCallback( vf->res_max, "callback", (XtCallbackProc)on_max, vf );
    vf->max_w = vf->descr.maxwidth;
    vf->max_h = vf->descr.maxheight;

    /* Video format elements */
    vf->label_format = XtVaCreateManagedWidget( "format", labelWidgetClass, vf->paned,
                                     XtNshowGrip, False,
                                     XtNlabel, "data format",
                                     XtNjustify, XtJustifyCenter, 0 );

    vf->paned_format = XtVaCreateManagedWidget( "format", panedWidgetClass, vf->paned,
                                         XtNshowGrip, False,
                                         XtNorientation, XtorientHorizontal,
                                         0 );

    vf->format_24 = XtVaCreateManagedWidget( "bpp24", toggleWidgetClass, vf->paned_format,
                                         XtNlabel, "RGB24",
                                         XtNshowGrip, False,
                                         XtNradioData, &select_format,
                                         0 );
    XtAddCallback( vf->format_24, "callback", (XtCallbackProc)on_24, vf );

    vf->format_32 = XtVaCreateManagedWidget( "bpp32", toggleWidgetClass, vf->paned_format,
                                       XtNlabel, "RGB32",
                                       XtNshowGrip, False,
                                       XtNradioData, &select_format,
                                       XtNradioGroup, vf->format_24,
                                       0 );
    XtAddCallback( vf->format_32, "callback", (XtCallbackProc)on_32, vf );

    vf->format_yuv420p = XtVaCreateManagedWidget( "yuv420p", toggleWidgetClass, vf->paned_format,
                                         XtNlabel, "YUV420P",
                                         XtNshowGrip, False,
                                         XtNradioData, &select_format,
                                         XtNradioGroup, vf->format_24,
                                         0 );
    XtAddCallback( vf->format_yuv420p, "callback", (XtCallbackProc)on_yuv420p, vf );

    /* Brightness, contrast, color & hue elements */
    /* brightness */
    vf->label_brightness = XtVaCreateManagedWidget( "brigthness", labelWidgetClass, vf->paned,
                                     XtNshowGrip, False,
                                     XtNlabel, "brigthness",
                                     XtNjustify, XtJustifyCenter, 0 );
    vf->brightness_w = XtVaCreateManagedWidget( "brigthness", labelWidgetClass, vf->paned,
                                     XtNshowGrip, False,
                                     XtNjustify, XtJustifyCenter, 0 );
    vf->br.w = vf->brightness_w;
    vf->br_w = XtVaCreateManagedWidget( "br", scrollbarWidgetClass, vf->paned,
                                  XtNshowGrip, False,
                                  XtNorientation, XtorientHorizontal, 0 );
    XtAddCallback( vf->br_w, "jumpProc", (XtCallbackProc)on_track, &vf->br );

    /* contrast */
    vf->label_contrast = XtVaCreateManagedWidget( "contrast", labelWidgetClass, vf->paned,
                                     XtNshowGrip, False,
                                     XtNlabel, "contrast",
                                     XtNjustify, XtJustifyCenter, 0 );
    vf->contrast_w = XtVaCreateManagedWidget( "brigthness", labelWidgetClass, vf->paned,
                                     XtNshowGrip, False,
                                     XtNjustify, XtJustifyCenter, 0 );
    vf->con.w = vf->contrast_w;
    vf->con_w = XtVaCreateManagedWidget( "con", scrollbarWidgetClass, vf->paned,
                                  XtNshowGrip, False,
                                  XtNorientation, XtorientHorizontal, 0 );
    XtAddCallback( vf->con_w, "jumpProc", (XtCallbackProc)on_track, &vf->con );

    /* colour */
    vf->label_color = XtVaCreateManagedWidget( "color", labelWidgetClass, vf->paned,
                                     XtNshowGrip, False,
                                     XtNlabel, "color",
                                     XtNjustify, XtJustifyCenter, 0 );
    vf->color_w = XtVaCreateManagedWidget( "brigthness", labelWidgetClass, vf->paned,
                                     XtNshowGrip, False,
                                     XtNjustify, XtJustifyCenter, 0 );
    vf->col.w = vf->color_w;
    vf->col_w = XtVaCreateManagedWidget( "col", scrollbarWidgetClass, vf->paned,
                                  XtNshowGrip, False,
                                  XtNorientation, XtorientHorizontal, 0 );
    XtAddCallback( vf->col_w, "jumpProc", (XtCallbackProc)on_track, &vf->col );

    /* hue */
    vf->label_hue = XtVaCreateManagedWidget( "hue", labelWidgetClass, vf->paned,
                                     XtNshowGrip, False,
                                     XtNlabel, "hue",
                                     XtNjustify, XtJustifyCenter, 0 );
    vf->hue_w = XtVaCreateManagedWidget( "brigthness", labelWidgetClass, vf->paned,
                                     XtNshowGrip, False,
                                     XtNjustify, XtJustifyCenter, 0 );
    vf->hue.w = vf->hue_w;
    vf->h_w = XtVaCreateManagedWidget( "h", scrollbarWidgetClass, vf->paned,
                                  XtNshowGrip, False,
                                  XtNorientation, XtorientHorizontal, 0 );
    XtAddCallback( vf->h_w, "jumpProc", (XtCallbackProc)on_track, &vf->hue );

    updatevalues(vf);

    /* Buttons */
    vf->buttons = XtVaCreateManagedWidget( "buttons", panedWidgetClass, vf->paned,
                                         XtNshowGrip, False,
                                         XtNorientation, XtorientHorizontal,
                                         0 );

    vf->b_ok = XtVaCreateManagedWidget( "b_ok", toggleWidgetClass, vf->buttons,
                                       XtNlabel, "Ok",
                                       XtNshowGrip, False,
                                       XtNstate, False,
                                       0 );
    XtAddCallback( vf->b_ok, XtNcallback, (XtCallbackProc)on_ok, (void*)vf );

    vf->b_apply = XtVaCreateManagedWidget( "b_apply", toggleWidgetClass, vf->buttons,
                                       XtNlabel, "Apply",
                                       XtNshowGrip, False,
                                       XtNstate, False,
                                       0 );
    XtAddCallback( vf->b_apply, XtNcallback, (XtCallbackProc)on_apply, (void*)vf );

    vf->b_cancel = XtVaCreateManagedWidget( "b_cancel", toggleWidgetClass, vf->buttons,
                                       XtNlabel, "Cancel",
                                       XtNshowGrip, False,
                                       XtNstate, False,
                                       0 );
    XtAddCallback( vf->b_cancel, XtNcallback, (XtCallbackProc)on_cancel, (void*)vf );
    vf->n = camera;

    XtRealizeWidget( vf->dialog );

    {
        /* fixating window size */
        int width = 10;
        int height = 10;
        XtVaGetValues( vf->dialog, XtNwidth, &width, XtNheight, &height, 0 );
        XtVaSetValues( vf->dialog, XtNminWidth, width, XtNminHeight, height,
                               XtNmaxWidth, width, XtNmaxHeight, height, 0 );
    }
}

////////////////////////////////////////////////////////////////////////////////
static void on_enable( Widget w, CameraWidget* data )
{
    int status = 1;
    XtVaGetValues( w, XtNstate, &status, 0 );
    data->enable = status;
}

static void on_render( Widget w, CameraWidget* data )
{
    int status = 1;
    XtVaGetValues( w, XtNstate, &status, 0 );
    data->render = status;
}

static void on_cam_apply( Widget w, CameraWidget* data )
{
    cvcamSetProperty( data->n, "enable", &data->enable );
    cvcamSetProperty( data->n, "render", &data->render );
    XtVaSetValues( w, XtNstate, False, 0 );
}

static void on_cam_cancel( Widget w, CameraWidget* data )
{
    XtDestroyWidget( data->dialog );
    free( data );
}

static void on_cam_ok( Widget w, CameraWidget* data )
{
    on_cam_apply( w, data );
    on_cam_cancel( w, data );
}

void icvVideoCameraPPDialog(int camera)
{
    int    res;

    char title[100];

    CameraWidget* vf = (CameraWidget*)malloc( sizeof(*vf) );
    cvcamGetProperty(camera, "description", &vf->descr);
    snprintf( title, 100, "%s, %s (%s): Camera options", vf->descr.device, vf->descr.DeviceDescription, vf->descr.ChannelDescription );
    
    cvvInitSystem(0, 0);
    /* Creating main dialog window */
    vf->dialog = XtVaAppCreateShell( title, "camera", topLevelShellWidgetClass,
                                XtDisplay( cvvTopLevelWidget ),
                                XtNminWidth, 10, XtNminHeight, 10,
                                XtNinput, 1, 0 );
    /* Creating main paned window... It will parent for all smaller elements */
    vf->paned = XtVaCreateManagedWidget( "CvCamera_paned", panedWidgetClass, vf->dialog,
                                     0 );
    /* Resolution elements */
    sprintf( title, "%s on %s", vf->descr.DeviceDescription, vf->descr.device );
    vf->label = XtVaCreateManagedWidget( "desriprion", labelWidgetClass, vf->paned,
                                     XtNshowGrip, False,
                                     XtNlabel, title,
                                     XtNjustify, XtJustifyCenter, 0 );

    cvcamGetProperty(camera, "enable", &res);
    vf->enable_w = XtVaCreateManagedWidget( "enable", toggleWidgetClass, vf->paned,
                                      XtNlabel, "enable",
                                      XtNshowGrip, False,
                                      XtNradioData, &select_res,
                                      XtNstate, res,
                                      0 );
    XtAddCallback( vf->enable_w, "callback", (XtCallbackProc)on_enable, vf );

    cvcamGetProperty(camera, "render", &res);
    vf->render_w = XtVaCreateManagedWidget( "render", toggleWidgetClass, vf->paned,
                                      XtNlabel, "render",
                                      XtNshowGrip, False,
                                      XtNradioData, &select_res,
                                      XtNstate, res,
                                      0 );
    XtAddCallback( vf->render_w, "callback", (XtCallbackProc)on_render, vf );

    /* Buttons */
    vf->buttons = XtVaCreateManagedWidget( "buttons", panedWidgetClass, vf->paned,
                                         XtNshowGrip, False,
                                         XtNorientation, XtorientHorizontal,
                                         0 );

    vf->b_ok = XtVaCreateManagedWidget( "b_ok", toggleWidgetClass, vf->buttons,
                                     XtNlabel, "Ok",
                                     XtNshowGrip, False,
                                     XtNstate, False,
                                     0 );
    XtAddCallback( vf->b_ok, XtNcallback, (XtCallbackProc)on_cam_ok, (void*)vf );

    vf->b_apply = XtVaCreateManagedWidget( "b_apply", toggleWidgetClass, vf->buttons,
                                       XtNlabel, "Apply",
                                       XtNshowGrip, False,
                                       XtNstate, False,
                                       0 );
    XtAddCallback( vf->b_apply, XtNcallback, (XtCallbackProc)on_cam_apply, (void*)vf );

    vf->b_cancel = XtVaCreateManagedWidget( "b_cancel", toggleWidgetClass, vf->buttons,
                                         XtNlabel, "Cancel",
                                         XtNshowGrip, False,
                                         XtNstate, False,
                                         0 );
    XtAddCallback( vf->b_cancel, XtNcallback, (XtCallbackProc)on_cam_cancel, (void*)vf );
    XtRealizeWidget( vf->dialog );
    
    vf->n = camera;

    {
        /* fixating window size */
        int width = 10;
        int height = 10;
        XtVaGetValues( vf->dialog, XtNwidth, &width, XtNheight, &height, 0 );
        XtVaSetValues( vf->dialog, XtNminWidth, width, XtNminHeight, height,
                               XtNmaxWidth, width, XtNmaxHeight, height, 0 );
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -