問題タブ [highgui]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
0 に答える
322 参照

c++ - OpenCV 2.3.1 で highgui エラーが発生する

64 ビット OSX Mountain Lion マシンで OpenCV 2.3.1 をビルドしようとしていますが、特定の一連の「宣言されていない識別子の使用」を回避できず、エラーが発生します。Git から taz.gz ファイルとソースの両方をビルドしようとしましたが、同じエラーが発生しました。

OSX Mountain Lion マシンで 2.3.1 のビルドに成功した人はいますか? もしそうなら、どのようにして次のエラーを回避しましたか:

opencv/modules/highgui/src/cap_ffmpeg_impl.hpp:486:5: エラー: 宣言されていない識別子 'av_open_input_file' の使用 av_open_input_file(&ic, filename, NULL, 0, NULL);

opencv/modules/highgui/src/cap_ffmpeg_impl.hpp:494:5: エラー: 宣言されていない識別子 'avcodec_thread_init'avcodec_thread_init(enc, get_number_of_cpus()) の使用;

opencv/modules/highgui/src/cap_ffmpeg_impl.hpp:524:15: エラー: 宣言されていない識別子 'av_open_input_file' の使用 int err = av_open_input_file(&ic, _filename, NULL, 0, NULL);

opencv/modules/highgui/src/cap_ffmpeg_impl.hpp:541:9: エラー: 宣言されていない識別子 'avcodec_thread_init' の使用 avcodec_thread_init(enc, get_number_of_cpus());

今のところ、いくつかのオプションがあります。ビルド プロセスが簡単な Ubuntu に切り替えるか、highgui コードを修正することができます。

以前にこのバージョンをビルドした経験がある場合は、助けていただければ幸いです。

0 投票する
1 に答える
704 参照

xcode - cvCreateTrackbar() が機能しない

初心者向けのopenCVブックでアプリを構築しています。main.mファイルのコードは次のとおりです。

ムービーは正常に再生されますが、トラック バーが表示されません。私は何が欠けていますか?

0 投票する
1 に答える
1305 参照

c++ - C++ Qt アプリケーションでの OpenCV の highgui

OpenCV の Web カメラ アクセスと画像表示機能を Qt のネットワーク機能 (OpenCV 2.4.2 highguiを使用した Qt 4.8.1 C++ コンソール アプリケーション) と組み合わせようとしています。現在、cv::Mat を Qt 形式に変換して、簡単にするためにカスタム Qt GUI で表示することを避けようとしています。

このために、すべての OpenCV の処理を​​行うラッパー クラスを作成しています (cap = new VideoCapture()、namedWindow()、cap->read()、imshow()、destroyAllWindows()、cap->release()) を制御します。 QTimerによってQThreadに移動します。これはほとんど機能しますが (まだウィンドウ タイトルの文字化け)、スレッドの親クラスがその QTCPServer からシグナルを受信して​​いるときに、OpenCV が新しいウィンドウを作成することがあります。これにより、もはや更新されない「死んだ」画像ウィンドウが発生します。

作成の順序 (OpenCV スレッド / QTcpServer) は問題ではないようですが、クライアントが接続されていない場合、OpenCV が最初に小さなウィンドウを作成し、その結果、ビデオ イメージのサイズに合わせて拡大されることがわかります。クライアントが接続すると、ほとんどの場合、小さいウィンドウが残り (「ét」のようなウィンドウ タイトルのゴミ)、新しいウィンドウが画像データを適切に受け取ります (「、ét」のようなウィンドウ タイトルのゴミ)。

OpenCV ラッパー オブジェクトをスレッドに移動しないことも同様に機能しますが、同じ問題が発生します (さらに悪いことに、2 つのデッド ウィンドウが作成され、そのうちの 2 つ目は既にイメージ フレームを受信して​​います)。

このような動作を引き起こすために、一般的に何が間違っている可能性がありますか?

この問題は、QOBject ラッパー クラスの 2 つの異なるメソッド (コンストラクターとスロット) で作成され、アクセスされる名前付きウィンドウが原因である可能性があると思われます。または、QTCPServer が Qt イベント ループをブロックしていますか? または、Signal-Slot メカニズムが QTCPServer イベントによってトリガーされ、 imshowが新しいウィンドウを作成するときに、何らかの理由で OpenCV ウィンドウ ハンドルが「ガベージ コレクション」されることはありますか? ポインターでウィンドウにアクセスする明確な方法はないため、これが理由であるに違いありません。最初の namedWindow() を削除すると、小さな空のウィンドウがなくなりますが、それでも 2 つのウィンドウが作成されます。

結局、自分で画像を変換して表示する必要があるようです-または別の方法はありますか?

0 投票する
1 に答える
4618 参照

c++ - cv::imshow は時々非常に遅い

に問題がありcv::imshowます。通常、画像サイズに対して約 1 ~ 2 ミリ秒の処理時間を消費しますが、処理パイプラインのある時点で、同じ種類の画像に対して 4 ~ 8 ミリ秒を使用します。

方法があります

imageメンバー変数であり、highgui ウィンドウは別の場所に作成されます。時間計測は と で動作しboost::posix_time ptimeますtime_duration

と呼ばれていました。

ポイントは、displayImage()複雑な処理チェーン (ビデオファイルからの画像の読み込み、前処理など) 内で呼び出されるcv::imshowと非常に遅くなるのに対して、更新された画像を再描画するための「一時停止」ビデオでの呼び出しは非常に高速であるということです。

cv::waitKey(10)時間計測開始前にa を追加すると、cv::imshow速度も速くなります。それで、どのブロックを処理しなければならない(gui?)ものがいくつかあるかもしれませんかcv::imshowcv::waitKey(40)ループ内の別のスレッドで呼び出され、キーボード入力がビデオを制御 (一時停止/再開など) するのを待ちます。私の知る限り、時間cv::imshow内に処理されるある種のキューで実行されますcv::waitKeyか?!? その時間帯に実行されるすべてのタスクに関する情報はどこにありますか? たぶん、コードの一部 (今では非常に複雑) を再配置して、imshow常に高速化できるようにすることができます。

では、通話では何が起こるのcv::imshowでしょうか? また、異なる状況で同じ通話の実行が遅い/速い理由は何でしょうか?

編集:通常の実行と「一時停止」モードでの処理の間に認識された1つの違いは、一時停止モードではメソッドがバインドされたマウスコールバック関数( windowThread?内から)から開始され、通常モードではメイン処理スレッドから開始されることです。 .

0 投票する
2 に答える
24451 参照

opencv - 'LNK1112: モジュール マシン タイプ 'x64' がターゲット マシン タイプ 'X86' と競合しています

Visual Studio 2012 を使用しています。エラーが発生しました

open_cv アプリケーションの要件に合わせてプロパティを変更しようとしました。