Je veux convertir une image du type cvMat à Qimage, avec mon code actuel, l'application ne fonctionne pas; Je l'ai fait dans l'autre sens (Qimage à Mat fonctionner très bien) s'il vous plaît me dire ce qui se passe mal avec mon codede cvMat à QImage
voici mon code pour Qimage à Mat:
Mat qimage2mat(const QImage& qimage) {
cv::Mat mat = cv::Mat(qimage.height(), qimage.width(), CV_8UC4, (uchar*)qimage.bits(), qimage.bytesPerLine());
cv::Mat mat2 = cv::Mat(mat.rows, mat.cols, CV_8UC3);
int from_to[] = { 0,0, 1,1, 2,2 };
cv::mixChannels(&mat, 1, &mat2, 1, from_to, 3);
return mat2;
}
et voici mon code pour Mat à Qimage
QImage mat2qimage(const Mat& mat) {
Mat rgb;
cvtColor(mat, rgb, CV_BGR2RGB);
return QImage((const unsigned char*)(rgb.data), rgb.cols, rgb.rows, QImage::Format_RGB888);
}
merci par avance
'Mat rgb' sort du périmètre et est * effacé * à la fin de la fonction. Copiez les données d'image ou convertissez à partir de 'mat', qui vit plus longtemps. – SpamBot
pouvez-vous envoyer expliquer comment puis-je copier les données – ner
Ou, solution pas cher, créer un 'Mat * rgb' avec' new'. – SpamBot