Zayoshin Ответов: 1

Как отключить автофокус веб-камеры с помощью кодов MFC C++


Я новичок в программировании MFC C++. Недавно я сделал программу с использованием MFC C++ от visual studio 2015 для захвата изображения с помощью веб-камеры. Для моей программы мне нужно отключить режим "автофокус" веб-камеры. Я использую logitech C922 pro.

Может ли кто-нибудь научить и посоветовать мне коды в MFC C++?

Большое спасибо и раньше....

Что я уже пробовал:

Используя openCV, я могу это сделать. Но я не хочу им пользоваться. Так что очень ценю, если кто-то научит и посоветует мне, как отключить автофокус веб-камеры с помощью кодов MFC C++...

Hi Richard, thanks a lot before... I am using below codes:

#include <vfw.h>  //I use "vfw32.lib"

//================================//

BOOL CProgramDlg::OnInitDialog()
{

    CDialogEx::OnInitDialog();
    
    // Add "About..." menu item to system menu.
    // IDM_ABOUTBOX must be in the system command range.
    ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
    ASSERT(IDM_ABOUTBOX < 0xF000);
    
    CMenu* pSysMenu = GetSystemMenu(FALSE);
    if (pSysMenu != NULL)
    {
        BOOL bNameValid;
        CString strAboutMenu;
        bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX);
        ASSERT(bNameValid);
        if (!strAboutMenu.IsEmpty())
        {
            pSysMenu->AppendMenu(MF_SEPARATOR);
            pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
        }
    }
    
    // Set the icon for this dialog.  The framework does this automatically
    //  when the application's main window is not a dialog
    SetIcon(m_hIcon, TRUE);         // Set big icon
    SetIcon(m_hIcon, FALSE);        // Set small icon
    
    m_pictCtrl_PS.Load(CString(_T(IDS_PS_BMP)));
    m_pictCtrl_tittle.Load(CString(_T(IDS_TITTLE_BMP)));
    
    // TODO: Add extra initialization here  
    RECT sensorRect;
    CWnd *cWndSensor = GetDlgItem(IDC_WEBCAM);
    CDC *pDC = cWndSensor->GetDC();
    cWndSensor->GetClientRect(&sensorRect);
    nWidth = (sensorRect.right - sensorRect.left);
    nHeight = (sensorRect.bottom - sensorRect.top);
    
    ReleaseDC(pDC);
       
    
    hMyWindow = capCreateCaptureWindow(_T("handle"), WS_CHILD | WS_VISIBLE, 0, 0, nWidth, nHeight, GetDlgItem(IDC_WEBCAM)->m_hWnd, 1);
    
    //SetWindowPos(hMyWindow, 1, 1, 10, 10, SWP_NOMOVE | SWP_NOZORDER);
    // connect the driver with the webcam 
    BOOL xx = capDriverConnect(hMyWindow, 0);
    
    if (xx == false)
    {
        AfxMessageBox("Webcam not found ", 0, 0);
        CDialogEx::OnOK();
        return false;
    }
    
    ;
    
    //----------- Set the Timer to grab new images -----------
    //Streaming
    SetTimer(1, 40, 0);
    
    //SetFocus_Method2 to IDC_EDIT1
    GotoDlgCtrl(GetDlgItem(IDC_TEXT_SERIAL));
    
    m_setting.Create(IDD_MASTER_SETTING, this);
    m_showROI.Create(IDD_SHOW_ROI, this);
    
    m_editc.EnableWindow(FALSE);
    m_editm.EnableWindow(FALSE);
    m_edit_ROI_1.ShowWindow(FALSE);
    m_edit_ROI_2.ShowWindow(FALSE);
    m_edit_ROI.ShowWindow(FALSE);
    m_edit_ROI1.ShowWindow(FALSE);
    m_pictCtrl_webcam2.ShowWindow(FALSE);
    
    return FALSE;  // return TRUE  unless you set the focus to a control
}

Richard MacCutchan

Какие коды вы используете для управления камерой?

Zayoshin

Код перешел к вопросу.

1 Ответов

Рейтинг:
0

Zayoshin

Большое спасибо, Ричард. Но я искал это в поиске google. Но все равно пока не мог найти. У вас есть еще какие-нибудь идеи или предложения?

Richard MacCutchan

Нет, извините, вам нужно пойти и прочитать всю документацию, связанную с использованием API камеры в C++.