Я пытаюсь создать QImage из std :: vector. Я пытался;Convert std :: vector <uint8_t> to QImage
void FaceCutThread::convertImage(std::vector<uint8_t> &buf)
{
QImage img(&buf[0], 300, 300, QImage::Format_ARGB32);
emit isFinisedFaceCut(img);
}
и
void FaceCutThread::convertImage(std::vector<uint8_t> &buf)
{
QImage img(buf.data(), 300, 300, QImage::Format_ARGB32);
emit isFinisedFaceCut(img);
}
как два типа конвертации не дает какой-либо ошибки, однако, когда я попытался показать это в QLabel
как;
void MainWindow::handleFaceResults(QImage& buf)
{
QImage myImage(buf);
ui->lblRawImage->setPixmap(QPixmap::fromImage(myImage));
}
мое приложение всегда неожиданно отделка. Не могли бы вы помочь мне как правильно преобразовать в QImage?
EDIT:
Я могу написать изображение в файл без каких-либо проблем, как;
bool save_file (const string &path, const vector<uint8_t> &data)
{
std::ofstream os;
os.open(path.c_str(), std::ios::out | std::ios::binary);
if (!os.is_open())
return false;
os.write((const char*)data.data(), data.size());
return true;
}
Вы уверены, что buf содержит достаточно элементов (300 * 300 * 4)? – marom
@marom, на самом деле я не знаю высоту и ширину buf ... Но я знаю его размер. Пожалуйста, см. Мои последние изменения .. – goGud
Хорошо, я переформулирую свой вопрос: достаточно ли data.size (buf.size()) достаточно большой? Должно быть (не менее) 300 * 300 * 4. – marom