获得徽章 0
- Qt与OpenCV开发-颜色转换。// 将Mat转换为QImage
QImage MatToQImage(const cv::Mat& mat)
{
QImage image;
// 检查矩阵是否有效
if (!mat.empty()) {
// 创建QImage对象,并分配内存
image = QImage(mat.cols, mat.rows, QImage::Format_ARGB32);
// 根据Mat的类型和通道数来设置Qt图像格式
switch (mat.type()) {
case CV_8UC4:
image = QImage(mat.data, mat.cols, mat.rows, static_cast<int>(mat.step), QImage::Format_ARGB32);
break;
case CV_8UC3:
image = QImage(mat.data, mat.cols, mat.rows, static_cast<int>(mat.step), QImage::Format_RGB888);
break;
case CV_8UC1:
image = QImage(mat.data, mat.cols, mat.rows, static_cast<int>(mat.step), QImage::Format_Indexed8);
break;
}
// 对象回收
if (image.format() != QImage::Format_RGB32) {
image = image.convertToFormat(QImage::Format_RGB32);
}
}
return image;
}展开85
![[可怜]](http://lf-web-assets.juejin.cn/obj/juejin-web/xitu_juejin_web/img/jj_emoji_5.ece2a96.png)
![[吃瓜群众]](http://lf-web-assets.juejin.cn/obj/juejin-web/xitu_juejin_web/img/jj_emoji_10.42a731c.png)