有什么办法可以准确存储cv::Mat使用 sqlite3 格式化数据Qt..因为我将来将使用相同的 cv::Mat 格式..
我尝试将图像转换为无符号字符*他们存储它..但这对我不起作用..还有其他技术吗?
您可以将 cv::Mat 序列化为 QByteArray (请参阅kde/libkface https://projects.kde.org/projects/extragear/libs/libkface/repository/revisions/master/entry/libkface/database/dbcontainers.cpp):
QByteArray mat2ByteArray(const cv::Mat &image)
{
QByteArray byteArray;
QDataStream stream( &byteArray, QIODevice::WriteOnly );
stream << image.type();
stream << image.rows;
stream << image.cols;
const size_t data_size = image.cols * image.rows * image.elemSize();
QByteArray data = QByteArray::fromRawData( (const char*)image.ptr(), data_size );
stream << data;
return byteArray;
}
然后存储到数据库。
从 DB 读取后从 QByteArray 进行转换:
cv::Mat byteArray2Mat(const QByteArray & byteArray)
{
QDataStream stream(byteArray);
int matType, rows, cols;
QByteArray data;
stream >> matType;
stream >> rows;
stream >> cols;
stream >> data;
cv::Mat mat( rows, cols, matType, (void*)data.data() );
return mat.clone();
}
这个对我有用。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)