我正在尝试从 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 位索引存储到最多具有两种颜色的颜色表中。有两种不同类型的单色图像:大端(MSB 优先)或小端(LSB 优先)位顺序。
...
createAlphaMask() 函数从该图像中的 alpha 缓冲区构建并返回一个 1-bpp 掩码...
还:
QImage::Format_MonoLSB --- 2 --- 图像以每像素 1 位存储。字节首先与较低有效位 (LSB) 一起打包。
谁能帮我澄清如何将其转移到 cv::Mat 中。
另外,我是否应该读到这个,每个像素将是一个unsigned char
或我们将存储 8 个像素。