QT -- QImage 转 OpenCV Mat
Qt5 中 QImage 转 OpenCV Mat 格式函数。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 | cv::Mat ImageMark::QImage2Mat( const QImage& image) { switch (image.format()) { // 8-bit, 4 channel case QImage::Format_ARGB32: break ; case QImage::Format_ARGB32_Premultiplied: { cv::Mat mat(image.height(), image.width(), CV_8UC4, ( void *)image.constBits(), image.bytesPerLine()); return mat.clone(); } // 8-bit, 3 channel case QImage::Format_RGB32: { cv::Mat mat(image.height(),image.width(), CV_8UC4, ( void *)image.constBits(), image.bytesPerLine()); // drop the all-white alpha channel cv::cvtColor(mat, mat, cv::COLOR_BGRA2BGR); return mat.clone(); } case QImage::Format_RGB888: { QImage swapped = inImage.rgbSwapped(); cv::Mat mat(swapped.height(), swapped.width(), CV_8UC3, ( void *)image.constBits(), image.bytesPerLine()); return mat.clone(); } // 8-bit, 1 channel case QImage::Format_Indexed8: { cv::Mat mat(image.height(),image.width(), CV_8UC1, ( void *)image.constBits(), image.bytesPerLine()); return mat.clone(); } // wrong default : qDebug() << "ERROR: QImage could not be converted to Mat." ; break ; } return cv::Mat(); } |
https://blog.csdn.net/kingkee/article/details/103366911?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522160524886119724835834140%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=160524886119724835834140&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!