2013-03-04 3 views
3

내가 같은 이력서를 사용하는 것으로 sqlite3를에 형식의 데이터가 .. Qt는를 사용하여 정확한 이력서 :: 매트를 저장할 수있는 방법 :: 미래에 매트 형식이있다 ..저장 정확한 CV : 매트 이미지

나는 이미지를 부호없는 숯 *으로 바꾸려고 노력했다. 그리고 그들을 그것을 저장하고있다.. 그러나 이것은 나에게 근무하지 않았다.. 다른 어떤 기술?

답변

2

당신은 QByteArray (kde/libkface 참조) CV : 매트를 직렬화 할 수 있습니다

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에 저장합니다. 는 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(); 
} 

.

관련 문제