1

非常に単純な質問です。vtkImageTracerWidget を使用して、セグメンテーション アルゴリズムでユーザー入力を表現しようとしています。このウィジェットを選択するきっかけとなったのは、David Doria のコードhereです。

つまり、ユーザーが画像に描画すると、基本的にはブラシとして機能し、アルゴリズムをシードします。

現在、次のコードを使用しています。

tracer->GetLineProperty()->SetLineWidth(20.0);

線幅を 1.0 にしようとすると、完全に機能します。または、同じ方法で SetColor() を使用して線の色を変更しようとすると。ただし、5.0と思われるものよりも線を広くすることはできません。ユーザーに大きなブラシを使用して、大きくて粗い入力をしてもらいたいと思います。5.0 vtkImageTracerWidget の行では十分ではありません。

ユーザー入力のサイズを大きくするにはどうすればよいですか? おそらく別のウィジェットを使用する必要がありますか? 最大線幅を確認したところ、10 ^ 36 のオーダーであったため、明らかに問題ではありません。

本当にありがとう!

4

1 に答える 1

0

Goodwin Lawlor の回答http://vtk.1045678.n5.nabble.com/Problem-with-vtkPolyLine-width-greater-than-20-td5667414.html#a5672819は、これが OpenGL の制限であることを説明しています。最大 GL 線幅が線幅に対応していることを確認できます (GL コンテキストが存在した後、つまり を呼び出した後 renderWindowInteractor->Start())。テストのために、インタラクター スタイルのイベントまたは同様のもので実行できます)。

// Initialize so we get these values back instead of garbage if the call doesn't work
GLfloat lineWidthRange[2];
lineWidthRange[0] = 123;
lineWidthRange[1] = 123;

glGetFloatv(GL_LINE_WIDTH_RANGE, lineWidthRange);

std::cout << "GL_LINE_WIDTH_RANGE: " << lineWidthRange[0] << " " << lineWidthRange[1] << std::endl;

私のハードウェアでは、これは印刷されました

GL_LINE_WIDTH_RANGE: 0.5 10

これは、(私が実験的に見たように) 10 が OpenGL が描画する最大の線であることを示しています。

于 2014-05-20T19:07:31.110 に答える