これを実装する方法を知っている人はいますか? 基本的に、matlab の impoly や imageJ の「ポリゴン セクション」ツールとまったく同じ機能が必要です。ここでは、クリックしてポリゴン セクションを形成し、各ノードを調整できます。また、アクセスしたいと思います。私が書いた小さなプログラムのGUIを作成しようとしているので、Qtからこの関数に。
また、無料ではない画像処理ツールボックスの一部であるため、matlab 関数の呼び出しを避けたいと思います。ありがとう。
これを実装する最善の方法は、Qt Graphics View フレームワークを使用することだと思います。背面に画像を表示するアイテムを使用してシーンを作成し、ポリゴンの角を表すドラッグ可能なアイテムを上部に追加します。
選択ツールはおそらく、ポリゴンのコーナーを子アイテムとしてホストする QGraphicsObject のサブクラスであり、ユーザーが選択を再調整するたびに更新されるコーナーの下の QGraphicsPolygonItem である必要があります。QGraphicsObject は QObject を継承するため、選択が変更されるたびに QPolygonF または QPolygon 引数を使用して信号を送信し、アプリケーションの他の部分に通知できます。
このデモは、必要なコーナー調整機能の良い例です。
(ええと、この例では、コントロール ポイントの描画とドラッグを最初から実装しています。代わりに QGraphicsEllipseItem を使用して、位置の変更に反応できると確信しています)
これを自分でコーディングする必要があると思います。C++ GUI Programming with Qt 4 book (PDF コピーがオンラインに出回っていますが、合法だと思います) には、ノードとリンクを含む図を作成する方法を示す優れた例があります。この章は、「グラフィックス ビューを使用した項目ベースのレンダリング」と呼ばれます。
基本的な考え方は、いくつかのドラッグ可能なノード (フラグが に設定されたQGraphicsItems )と、それらを接続するいくつかのリンク ( QGraphicsLineItems ) があるということです。これらはすべて ROI を表す複合 QGraphicsItem に入り、それらはすべて QGraphicsScene に入り、QGraphicsViewによって表示されます。ItemIsMovable
true
結論: MATLAB 関数の組み込みコピーはありませんが、すべてのツールが用意されています。