我想让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
答案 0 :(得分:0)
cv::Mat
对象只是图像数据的标题,因此您可以在对象构造上执行此操作:
cv::Mat mat(img.height(), img.width(), type, img.bits());
其中type
取决于您的数据,CV_8UC1
取决于单个频道,CV_8UC3
取决于RGB等等。