Как преобразовать заголовок cv :: mat и часть данных в один qbytearray?

Я хочу использовать Qftp модуль Qt 4.8.1 для отправки изображений opencv на FTP-сервер. Я написал следующий код:

        ftp = new QFtp(this);
//ftp initilization
.
.
.
.
//
cv::Mat InputImage(100,100,CV_8UC1,cv::Scalar::all(75));
QImage FTP_Result = QImage((const uchar *) InputImage.data, InputImage.cols, InputImage.rows, InputImage.step, QImage::Format_Indexed8);
QByteArray byteMe((char *) FTP_Result.bits());

qDebug()<<"Image size is: "<<FTP_Result.height()<<"*"<<FTP_Result.width(); //it returns 100*100
ftp->put(byteMe,"Sample.jpg");

Когда я захожу на жесткий диск FTP-сервера, я нахожу sample.jpg, и он заполнен символом «К», который является эквивалентом Аски «75». Кажется, что заголовок отсутствует, поэтому операционная система считает, что это простой текстовый файл. Я думаю, это потому, что я только скопировал InputImage.data в переменную QByteArray, поэтому информация об изображении недоступна. Что я должен сделать, чтобы скопировать информацию заголовка «InputImage» в переменную «byteMe», чтобы я мог сохранить здоровый файл JPEG?

1

Решение

Пытаться

QByteArray byteMe((char *) FTP_Result.bits(), FTP_Results.byteCount());

Когда вы строите с простым char * он будет искать строку с нулевым символом в конце.

0

Другие решения


По вопросам рекламы [email protected]