問題タブ [qimage]
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.
qt - QGraphicsView のスクロールと画像のスケーリング/トリミング
QGraphicsView に、スクロールバーやキーボードとマウスでスクロールせずに、常にビューポートのサイズに合わせて拡大縮小 (および必要に応じてトリミング) される背景画像が必要です。以下の例は、ビューポートで画像をスケーリングおよびトリミングするために行っていることですが、エーテルから引き出されたトリミングにランダムな値を使用しています。論理的な解決策が欲しいですか?
QGraphicsView のサイズを変更しても機能する QGraphicsView のサイズに合わせて画像をスケーリングおよびトリミングする方法を知りたいです。1.5 と 19 はどこから来たのですか?
編集; setBackgroundBrush も使用しようとしましたが、スケーリング/クロップされた QImage/QPixmap を使用している場合でも、タイル張りの背景が表示されます。
編集; これまでの私の解決策は、必要な結果を得るために drawBackground() をオーバーライドすることでしたが、それでも、画像を qgraphicsview のビューポート サイズに合わせてサイズ変更する方法を学ぶのには役立ちません。それ以上の回答は大歓迎です。
multithreading - QT-QImageとマルチスレッドの問題
みなさん、こんにちは。
http://i48.tinypic.com/316qb78.jpgの画像を参照してください。
電子顕微鏡のMRC画像から細胞のエッジを抽出するアプリケーションを開発しています。
MRCファイル形式はボリュームピクセルデータ(http://en.wikipedia.org/wiki/Voxel)を格納し、3D char配列(char ***)を使用してMRCファイルからデータ(グレースケール値)をロードおよび格納します。
画像に示されているように、XY、YZ、ZX平面をそれぞれ表示する3つのビューアがあります。ビューアの上部にあるスクロールバーは、軸に沿って画像スライスを変更するために使用します。
ユーザーがスクロールバーの位置を変更したときに実行する手順は次のとおりです。
1)新しいスクロールバーの値を取得します(これは選択されたスライスです)
2)関連平面(YZ、XY、またはZX)の場合、3D char配列(char ***)を読み取って、選択したスライスの(char *スライス;)配列を生成します。
3)新しいQImage *(Format_RGB888)を作成し、「slice」を読み取ってピクセル値を設定します(img-> setPixel(x、y、c);を使用)。
4)この新しいQImage *は、paintEvent()メソッドでペイントされます。
集中的なプロセスであるため、別のスレッドで「エッジ検出」プロセスを実行します。このプロセスでは、検出された曲線(ピクセルのセット)をQImage *の上に(レイヤーとして)描画する必要があります。これは、QTスレッドの外部でdrawPoint()メソッドを呼び出す必要があることを意味します。
この場合、QImageを使用するのが最善の方法ですか?
別のスレッドからQT描画メソッドを実行するための最良の方法は何ですか?
前もって感謝します、
qt - QT の非常に大きな QImage とメモリ マップ ファイル
QImage を MMF ファイルにバインドして、ディスク上で直接メモリを消費することなく画像を操作したいと考えています。残念ながら、私のコードはメモリ内にコピーを作成します。
私のプログラムは非常に大きな画像を処理する必要があります。
qt - Qt - QImage Qimage を別の Qimage に貼り付ける方法はありますか?
Qimage
与えられたいくつかから始めて、いくつかをより大きなものに簡単に貼り付ける方法を探してい(x,y)
ます。今、私はピクセルごとにすべてコピーしていますQimage
。
qt - 画像をテキストに変換する
画像をテキストとして xml ファイルに保存できるようにしたいのですが、効率的な方法を見つけることができません。
これまでのところ、私は試しました:
それが機能しているという事実にもかかわらず、結果は巨大なファイルです! そこにQCompressを追加しようとしましたが、あまり成功しませんでした...実際、QCompressは何も圧縮していないようです...
私は間違った方法でやっていると思いますが、誰かが私の道を教えてくれますか?
c++ - QImage ファイルパス
ドキュメントのどこにもこれが表示されないため、おそらく存在しませんが、念のため:
パラメータとして QImages のベクトルを受け入れる関数があります。各 QImage は、ある時点でディスクからロードされ、編集されていません。つまり、読み取られているだけです。理想的には、すべての QImage をループして、それらのファイル パスのリストを XML ファイルに出力することです。
残念ながら、ドキュメントには、イメージが読み込まれた元のファイル パスを取得する方法はありません。だから私の質問は、QImageだけが与えられた場合、QImageが最初にロードされたファイルパスかどうかを判断することは可能ですか?
次のようなもの:
QString QImage::getOriginalFilepath();
これはおそらく無益な質問であることはわかっていますが、質問する価値は常にあると思います。
(ちなみに、私はQt 4.7を使用しています。)
qt - unsigned char* データから QImage を構築する
Image オブジェクト (Point Grej FlyCapture2 SDK でキャプチャ) を QImage オブジェクトに渡す際に問題が発生しました。関数ごとに画像データに関連付けられたポインターを取得しています。
次に、次の方法でデータをロードします。
両方の Image オブジェクトのデータの形式は 8 ビットのモノカラーです。BytesPerLine パラメーターは、イメージの幅と等しくなければなりません (FlyCapture2::Image を .bmp に保存してから QImage にロードすることで、既に確認済みです)。
unsigned char* から uchar* へのキャストに問題があると思いますか? 他にアイデアはありますか?画像をピクセルごとにコピーするのは遅すぎます。
編集: FlyCapture によってキャプチャされた画像を関数FlyCapture2::PIXEL_FORMAT_RGB8
内の R = G = B = 8 ビットに変換していPGR::SnapShot()
ます。SnapShot() はunsigned char
* const を返します。ここに私のQt表示機能の一部があります:
また、Imgをファイルに保存しようとしましたが、未処理の例外が発生しました。他のピクセル形式のペアを試しました ( FlyCapture2::PIXEL_FORMAT_RGB
- 24 ビット RGB with QImage::RGB88
8 およびFlyCapture2::PIXEL_FORMAT_RGBU32
with QImage::RGB32
)
また、私が使用している QImage コンストラクターが colorTable を設定しないことにも言及する価値があります (QImage が grayScale であるかどうかを確認するときに例外が発生します)。もう少し助けが必要だと思います。
qt4 - QImageまたはQPixmapを半透明にする方法-またはsetAlphaChannelが廃止された理由
4.7そしてqgraphicsviewに2つの画像をオーバーレイしたい。上の画像は、透けて見えるように半透明にする必要があります。最初、両方の画像は完全に不透明です。各ピクセルのグローバルアルファ値を設定する関数が存在することを期待していましたが、そのような関数はないようです。これに最も近いのはQPixmap::setAlphaChannel(const QPixmap&alphaChannel)ですが、Qt-4.6以降は廃止されたとマークされています。代わりに、マニュアルではQPainterのCompositionModesについて言及していますが、不透明な画像に必要な透明度を追加することに成功していません。誰かが私に実用的な例を示したり、コードを共有したりできますか?
編集: 質問をしてからほんの数時間後に、自分の答えを持って申し訳ありません。この記事から、次のコードがその役目を果たしていることがわかりました。アルファ値をピクセル単位で変更するよりも、これが「より良い」(多くの場合、より高速に変換される)と見なされるのではないかと思います。
qt - QWebKitでQImageを表示するには?
イメージを一時ファイルに書き出さずに QWebFrame に (ファイルシステムではなくメモリ内に) QImage を表示する方法はありますか?
c++ - QTextEditで画像を別のものに置き換えます
QTextEdit にテキストと画像があるとします。QTextEdit の HTML コードを抽出するとします。画像がインスタンス化されている HTML コード内の場所を見つけて ()、元の画像の位置とサイズを保持する QImage オブジェクトとして持っている別の画像に置き換える方法を説明します。
つまり、2番目の画像がQImageとしてプログラムに格納されている場合、最初の画像の位置とサイズを保持したまま画像を交換する必要があります。
一枚目の画像は全く無い場合もございますのでご了承ください。file://path/to/image/image_name.pngのような画像があるかどうかに関係なく、持っている HTML コードが人為的に QTextEdit に設定される場合があります。