0

我想让 cv::mat 的缓冲区指向 QImage 的缓冲区,但不将 QImage 的数据复制到 cv::mat 中。

cv::Mat const reference_qimage_to_mat(QImage const &img, int format)
{
    cv::Mat mat(img.height(), img.width(), format);

    for(int i = 0; i != mat.rows; ++i)
    {
        //pseudo code, wouldn't work
        //mat.ptr(i) = img.scanLine(i);
    }

    return mat;
}

我尝试通过谷歌搜索答案,但我只能找到如何将 QImage 的数据复制到 cv::mat.Thanks

4

1 回答 1

0

cv::Mat对象只是图像数据的标头,因此您可以在对象构造时执行此操作:

cv::Mat mat(img.height(), img.width(), type, img.bits());

type取决于您的数据,对于CV_8UC1单通道,CV_8UC3对于 RGB 等。

于 2012-11-07T17:56:24.720 回答