gpt4 book ai didi

qt - 在 sqlite3 数据库中存储精确的 cv::Mat 图像

转载 作者:太空宇宙 更新时间:2023-11-03 21:06:08 26 4
gpt4 key购买 nike

有什么方法可以使用 Qt 在 sqlite3 中存储精确的 cv::Mat 格式数据..因为我将来会使用相同的 cv::Mat 格式..

我尝试将图像转换为 unsigned char* 并存储它..但这对我不起作用..任何其他技术??

最佳答案

您可以将 cv::Mat 序列化为 QByteArray(参见 kde/libkface):

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;
}

然后存储到数据库。从数据库读取后从 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();
}

它对我有用。

关于qt - 在 sqlite3 数据库中存储精确的 cv::Mat 图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15198131/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com