質問

すべての挨拶、

画像を参照してください:http://i48.tinypic.com/316qb78.jpg

電子顕微鏡からMRC画像から細胞エッジを抽出するアプリケーションを開発しています。

MRCファイル形式は、ボリュームピクセルデータを保存します(http://en.wikipedia.org/wiki/voxel)そして、3D Charアレイ(char ***)を使用して、MRCファイルからデータ(グレースケール値)をロードして保存します。

画像に示すように、それぞれXY、YZ、ZXの平面を表示する3人の視聴者がいます。視聴者の上部にあるスクロールバーは、軸に沿って画像スライスを変更するために使用します。

ユーザーがScrollbarの位置を変更したときのステップは次のとおりです。

1)新しいScrollbar値を取得します。(これは選択されたスライスです)

2)リラヴァントプレーン(YZ、XYまたはZX)の場合、3Dチャーアレイを読んで選択したスライスのアレイ(char*slice;)アレイ(char ***)

3)新しいQimage*(format_rgb888)を作成し、「スライス」(img-> setpixel(x、y、c);を使用して」を読み取ってピクセル値を設定します。

4)この新しいQimage*は、PaintEvent()メソッドで塗装されています。

それは集中的なプロセスであるため、別々のスレッドで「エッジ検出」プロセスを実行します。このプロセスの距離は、Qimage*の上に検出された曲線(ピクセルのセット)を描く必要があります。 qtスレッドの外側のdrawpoint()メソッドを呼び出す必要があることを意味します。

このケースでQimageを使用するのは最高の方法ですか?

別のスレッドからQT描画方法を実行する最良の方法は何ですか?

前もって感謝します、

役に立ちましたか?

解決

のドキュメントから QImage:

なぜなら QImage aです QPaintDevice サブクラス、 QPainter 画像を直接描画するために使用できます。使用するとき QPainter aで QImage, 、絵画は、現在のGUIスレッド以外のスレッドで実行できます。

Aを作成するだけです QPainter あなたの画像に、必要なものを描きます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top