Maison >développement back-end >C++ >Comment puis-je convertir de manière fiable un cv::Mat en QImage ?

Comment puis-je convertir de manière fiable un cv::Mat en QImage ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-20 02:36:09930parcourir

How Can I Reliably Convert a cv::Mat to a QImage?

Conversion OpenCV cv::Mat en QImage

OpenCV cv::Mat et Qt QImage sont deux structures de données couramment utilisées pour stocker et manipuler des images. La conversion entre ces formats est une tâche courante, et il existe plusieurs méthodes pour y parvenir.

Solution de Michal Kottman

Une solution, telle que référencée dans la question, est fournie par Michael Kottman. Cette méthode implique l'affectation directe des données cv::Mat à QImage:

QImage imgIn= QImage((uchar*) img.data, img.cols, img.rows, img.step1(), QImage::Format_RGB888);

Réponse aux limitations

Cependant, dans certains cas, cette approche peut ne pas donner le résultats attendus pour certaines images. Pour résoudre ce problème, une solution améliorée est proposée :

QImage imgIn= QImage((uchar*) img.data, img.cols, img.rows, img.step, QImage::Format_RGB888);

Différence clé

La différence cruciale dans cette solution est l'inclusion de img.step dans l'appel de fonction . Bien que Qt ne puisse pas générer d'erreur sans ce paramètre, son absence peut conduire à un affichage incorrect de certaines images.

Conclusion

En incorporant img.step, cette solution fournit une méthode plus robuste pour convertir cv::Mat en QImage, garantissant une représentation d'image cohérente et précise dans tous les cas.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn