【Qt】在Qt上显示OpenCV图像

在Qt的Label上显示OpenCV mat格式的图片;

思路:Mat–QImage–QPixmap–QLabel

代码如下:

Mat Img;
Img = imread("rest.jpg");
cvtColor(Img,Img,CV_BRG2RGB);
ui->image_lable->setPixmap(QPixmap::fromImage(QImage(Img.data,Img.cols,Img.rows,Img.step,QImage::Format_RGB888)))

注意:opencv用的是BGR颜色空间,需先转换为RGB模式,QImage格式为Format_RGB888.


发布了47 篇原创文章 · 获赞 108 · 访问量 29万+
展开阅读全文

Qlabel显示mat类型的图像大小改变不了

10-20

ui.artwork->setScaledContents(true); ui.artwork->setPixmap(QPixmap::fromImage(image_mat(camera.get_img()))); QImage Skinmesh::image_mat(cv::Mat mat){ // 8-bits unsigned, NO. OF CHANNELS = 1 if (mat.type() == CV_8UC1) { QImage image(mat.cols, mat.rows, QImage::Format_Indexed8); // Set the color table (used to translate colour indexes to qRgb values) image.setColorCount(256); for (int i = 0; i < 256; i++) { image.setColor(i, qRgb(i, i, i)); } // Copy input Mat uchar *pSrc = mat.data; for (int row = 0; row < mat.rows; row++) { uchar *pDest = image.scanLine(row); memcpy(pDest, pSrc, mat.cols); pSrc += mat.step; } return image; } // 8-bits unsigned, NO. OF CHANNELS = 3 else if (mat.type() == CV_8UC3) { // Copy input Mat const uchar *pSrc = (const uchar*)mat.data; // Create QImage with same dimensions as input Mat QImage image(pSrc, mat.cols, mat.rows, mat.step, QImage::Format_RGB888); return image.rgbSwapped(); } else if (mat.type() == CV_8UC4) { //qDebug() << "CV_8UC4"; // Copy input Mat const uchar *pSrc = (const uchar*)mat.data; // Create QImage with same dimensions as input Mat QImage image(pSrc, mat.cols, mat.rows, mat.step, QImage::Format_ARGB32); return image.copy(); } else { //qDebug() << "ERROR: Mat could not be converted to QImage."; return QImage(); } } Mat里面装的是2560*1400大小的图片 布局是Qlabel放在Qwidget上面用的Horizontal Layout 现在是label跟着图片大小在变化不是图片跟着label变化 有什么好的方法让图片跟随label大小变化的吗 问答

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 编程工作室 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览