QPixmap からビットマスクを抽出して OpenCV に渡そうとしています。私のビットマスクは、「ペイント」操作によって作成されます。
これまでの私のプロセスは次のとおりです。
を作成し、
QPixmap,
QPixmap::fill(QColor(0,0,0,0))
を使用QPainter
しQPainter::setPen(QColor(255,0,0,255))
てQPainter::drawPoint(mouse_event->pos()
QPixmap::toImage()
ビットマスクを抽出する準備ができたらQImage::createAlphaMask()
、 を返すように文書化されていますQImage::Format_MonoLSB
私は今、公式に立ち往生しています。ドキュメントの解読に問題があります:
QImage に格納されている各ピクセルは整数で表されます。整数のサイズは、フォーマットによって異なります。QImage は Format 列挙型で記述されたいくつかの画像フォーマットをサポートしています。
モノクロ イメージは、1 ビット インデックスを使用して、最大 2 色のカラー テーブルに格納されます。モノクロ イメージには、ビッグ エンディアン (MSB ファースト) またはリトル エンディアン (LSB ファースト) の 2 種類があります。
...
createAlphaMask() 関数は、このイメージのアルファ バッファから 1 bpp マスクを作成して返します...
また:
QImage::Format_MonoLSB --- 2 --- 画像は 1 ビット/ピクセルを使用して保存されます。バイトは最下位ビット (LSB) から順にパックされます。
これをcv::Matに転送する方法を明確にするのを手伝ってくれる人はいますか。
また、これを読むことになっているのは、各ピクセルがunsigned char
1 ビットになるか、8 ピクセルをビットに格納するかということです。