2017-07-19 9 views
0

さまざまな出力ポート(VGA、HDMI、DVI)を持つTVからフレームを取得するビデオキャプチャデバイス(VCD)があります。これらのフレームをC++/OpenCVで読み込み、処理してから、C++/Qt QLabelで出力を表示します。C++/pythonを使用してビデオキャプチャ入力ポートを調整します

入力ポート(DVIからHDMIまたはHDMIからVGAへ...)を変更すると、VCDのクロスバーダイアログウィンドウを手動で開き、入力ポートを切り替える必要があります。

また、各入力ポートに対して、Iは大きさ及びワイヤのスケーリング、色の範囲に関連するいくつかのパラメータを調整する必要

ビデオキャプチャデバイスのためのffmpegのコマンドライン+クロスバーウィンドウでコマンドウィンドウを示し長さ

C++またはPythonコードを使用して、対応する正しいパラメータで正しい入力ポートを選択するこのプロセスを自動化する必要があります。

私は、ビデオキャプチャデバイスのクロスバーダイアログボックスのすべての入力ピンを読み取る方法を探していました。これは、必要なピンを設定/解除します。

ありがとうございます。

+0

あなたのご質問はありますか? – eyllanesc

+0

私は、ビデオキャプチャデバイス用のクロスバーダイアログボックスのすべての入力ピンを読み取る方法を探していました。これは、必要なピンを設定/解除します。私はそれを行う方法が必要です – Tarek

答えて

0

ここでは、C++/WinAPIの設定ダイアログでVIDEO INPUTピンの設定/解除を行う例を示します。このコードでは、チェックボックスはメインダイアログの子要素です。場合は、タブコントロール "カスタム設定"の中に入れ子になっている場合があります。この場合は、最初にそのタブを見つける必要があります。

#include <windows.h> 
#include <string> 
#include <vector> 
#include <map> 
#include <iostream> 


int main(int, char **) 
{ 
    // Find the dialog 
    HWND hwnd = FindWindowA(NULL, "%Your settings dialog caption%"); 

    if (hwnd == NULL) 
    { 
     std::cerr << "cannot find settings dialog" << std::endl; 
     return 1; 
    } 

    std::map<std::string, HWND> options; 

    // Get first dialog element 
    HWND h = GetWindow(hwnd, GW_CHILD); 

    char caption[250]; 

    std::vector<std::string> inputs{ 
     "1/HDMI", 
     "2/DVI-D", 
     "3/COMPONENT", 
     "DVI", 
     "4/VGA", 
     "SOG", 
     "5/SDI", 
     "6/COMPOSITE", 
     "7/S-VIDEO", 
     "8/AUTO" 
    }; 

    while (h != NULL) 
    { 
     // Get element text 
     if (GetWindowTextA(h, caption, 250)) 
     { 
      std::string scaption(caption); 
      // Check the text, if it's in the list of the option, put it into map. 
      if (std::find(inputs.begin(), inputs.end(), scaption) != inputs.end()) 
      { 
       options[caption] = h; 
      } 
     } 
     h = GetWindow(h, GW_HWNDNEXT); 
    } 

    // Check the 4/VGA option. 
    SendMessageA(options["4/VGA"], BM_CLICK, 0, 0); 

    return 0; 
} 
+0

ありがとう、これは私が行う必要がありますが、私はあなたが示唆したように、タブ内のドロップメニューから値を取得するために、コードを変更したい。あなたのようなコードを書く方法を教えてくれる良い資料はどこにありますか? – Tarek

+0

また、pythonでこれを行うための他のライブラリはありますか? Ubuntuを使用している場合、この同じコードを使用することはできますか? Qtに何か別の選択肢がありますか? – Tarek

+0

@TarekこのコードはWinAPI関数を使用しているため、他のプラットフォームに移植することは容易ではありません。しかし、Ubuntuに移植することは可能です。ダイアログの要素を反復処理したり、テキストを読み込んだり、状態を変更したりするAPIを使用するだけです。 _ Qtには何か他の選択肢がありますか?_私はそう思っていません。Qtは独自のUIを構築するためのツールを提供し、他のAPIとはやり取りしません。 – ikleschenkov

関連する問題